Сравнение пикселей истинного цвета в C - PullRequest
2 голосов
/ 23 сентября 2010

это мой первый вопрос здесь; надеюсь, я буду достаточно ясен ...

У меня есть эта структура в наличии

typedef struct COLORTRIPLE
{
  byte blue;
  byte green;
  byte red;
}

, который содержится в другой структуре, подобной этой:

struct color_temp
{ 
  COLORTRIPLE color;
  int temp;
};

А (РЕДАКТИРОВАТЬ)

#define PIXEL(image, row, column)  \
    image.pixel [(row) * image.width + (column)]

- это макрос.

Так будет PIXEL(bmpin,row,column).red, PIXEL(bmpin,row,column).green and PIXEL(bmpin,row,column).blue.

Мне нужно сканировать растровый файл попиксельно и проверять, равен ли текущий пиксель одному цвету структуры color_temp.

Я пробовал что-то вроде:

if ((PIXEL(bmpin,row,column))==(map[n].color))
{...}

, где

struct color_temp map[]

- это вектор color_temp.

Но Cygwin GCC говорит:

error:request for member 'color' in something not a struct or a union

Есть предложения?

Спасибо

Mark

Ответы [ 2 ]

2 голосов
/ 23 сентября 2010

Попробуйте это:

int is_pixels_equal (COLORTRIPLE a, COLORTRIPLE b) {
  return (a.red == b.red && a.green == b.green && a.blue == b.blue);
}
0 голосов
/ 23 сентября 2010

Вы не можете напрямую сравнивать структуры в C, он не определяет такой оператор. Поэтому вы должны реализовать это сами, как предложил Виллихем Тотланд. Для более подробного обсуждения см., Например, этот вопрос .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...