Есть ли в нем какая-либо конкретная функция, которая может генерировать красный канал изображения для сравнения с исходным изображением?SDL Library для извлечения красного канала
ответ
Вы можете получить доступ к данным о пикселях с помощью surface->pixels
и изображений Rmask с surface->format->Rmask
. Посмотрите в битовые операции для извлечения данных
SDL_Surface* t;
//Code
Uint32* pixels = (Uint32*)t->pixels;
int x = 10 ,y = 10; //For pixel at 10, 10
Uint32* MyPixel = pixels + ((y-1) + t->w) + x;
Uint32 RedOnly = *MyPixel & t->format->Rmask;
Примечание: Сделана глупая ошибка и забыли у должно быть у-1.
Uint32* MyPixel = pixels + ((y-1) + t->w) + x
работает так:
пикселей указатель, указывающий на первый элемент в массиве данных uint32. (32 бит int). Если я делаю пиксели + 1, то это говорит о том, что 1 Uint32 размер байт памяти по дороге. Если я хочу пиксель 10,10 в 2D системе координат, нам нужно преобразовать его в одномерное линейное значение. SDL_Surface пикселей по горизонтали и линейной так далее:
1,2,3,4,5
6,7,8,9,10
Так ((y-1) * t->w) + x
получит целое значение для пикселя в форме lineaer. Для пикселя при 2,2, например, в случае выше, ширина равна 5, становится ((2-1)*5)+2)
, которая равна 7
. Затем мы берем пиксели и смещаем их на 7 (pixels+7
), который является адресом для 7-битных Uint32 (7 * 32 бит) из начала массива.
Uint32 RedOnly = *MyPixel & t->format->Rmask
работает следующим образом: Позвольте мне предположить некоторый случайный Uint32 для вашего пикселя (0xFF41A401), допустим, формат изображения ARGB. Это означает, что ваш Rmask равен 0x00FF0000.
В бинарном тех
*MyPixel = 1111 1111 0100 0001 1010 0100 0000 0001
Rmask = 0000 0000 1111 1111 0000 0000 0000 0000
//And a bitwise & operation will result in:
RedOnly = 0000 0000 0100 0001 0000 0000 0000 0000
Таким образом, только красные значения остаются, так что вы «стереть» все синяя/зеленый информации.
Что такое t-> w? Я нашел эту функцию подходящей в этом случае http://wiki.libsdl.org/SDL_CreateRGBSurface? – user2711681
t-> w является 'surface-> w' или шириной в пиксельном подсчете поверхности. 'surface-> h' - высота, но не нужна для этого. '(y + t-> w) + x превращает координату x, y в линейное значение пикселя. – Chemistpp
Итак, я должен запустить цикл for, но до этого я должен получить значение w и h, соответственно, обряда? Но изначально у вас есть все пиксели в этом переменном обряде? Тогда то, что вы здесь делаете, - это не ясные пиксели + (y + t-> w) + x; – user2711681
- 1. vImageConvert для извлечения одного канала
- 2. Абоненты извлечения канала для владельца контента
- 3. Имитация кнопки клавиатуры Нажмите [SDL Library]
- 4. Среднее и стандартное отклонение красного канала нескольких изображений
- 5. Как получить среднее значение красного канала от UIImage
- 6. Использование DateDiff с Linq.Dynamic library для извлечения сегодняшних записей
- 7. Компиляция красного цвета: получение красного/системного кода
- 8. Установка/использование SDL для Qt
- 9. ошибка извлечения видео youtube по имени канала в Asp.net MVC4
- 10. Изображения канала канала выражения
- 11. для извлечения данных из таблиц
- 12. Graphics Library for C++
- 13. Развертывание канала канала приложения
- 14. Отключение канала: ошибка канала
- 15. Как сделать SDL-файлы SDL для проб (AAC)?
- 16. Использование SDL для замены цветов с использованием цветных ключей SDL
- 17. SDL ошибки в Xcode
- 18. Обнаружение области красного цвета
- 19. узла-красного присваивание переменной
- 20. SDL отсутствует архитектура x86_64
- 21. Создание тестовых примеров для красного черного дерева
- 22. анимация для красного ящика с jquery
- 23. анзибль модуля для настройки пользователей красного смещения
- 24. Конструкция таблицы красного сдвига для эффективности
- 25. Использование PHP для извлечения счетчика просмотров YouTube
- 26. Ресурсосберегающий ResourceManager для текстур SDL
- 27. SDL перекрестная платформа для Linux
- 28. SDL + Qt для игрового движка
- 29. Красного фон отрицательных значений
- 30. Переместить окно SDL в SDL 1.2
SDL на самом деле не является библиотекой обработки изображений. – jrok
Итак, что мы можем сделать с SDL? Может ли он генерировать соответствующий красный канал или зеленый канал? – user2711681