Я новичок в преобразовании типов изображений. Я хотел бы определить цвет каждого пикселя на экране. Я могу прочитать цвета из буфера кадров, но все они в RGB565. Для отслеживания определенного цвета я хотел бы преобразовать RGB565 в HSV, чтобы я мог проверить оттенок.
Я уже пытался преобразовать его через онлайн-конвертер из RGB565 в RGB888. Например, от RGB565 '08F5' до RGB888 '081BAA'. А затем с RGB888 до HSL «233 91% 35%». Тем не менее, я не могу заставить это работать с кодом C. Цвета в формате HEX и сохраняются в 2 в одном регистре. Я сделал массив из четырех символов для каждого цвета.
int colorcodes = IORD_ALTERA_AVALON_PIO_DATA(0x08000000 + 123204);
char colorcodesInHex[9];
snprintf(colorcodesInHex, 9, "%08x\n", colorcodes);
char firstColor[4];
char secondColor[4];
for(int i = 0; i <= 7; i++)
{
if(i <= 3)
{
firstColor[i] = colorcodesInHex[i];
}
else if (i >= 4 && i <= 7)
{
secondColor[i - 4] = colorcodesInHex[i];
}
}
Кто-нибудь знает, как преобразовать RGB565 в RGB888, а затем в HSL в C?