McBodik 0 Жалоба Опубликовано June 6, 2012 Здравствуйте. У меня возник небольшой вопрос. для каждого пикселя возможно сделать вот такое: CvScalar pix=cvGet2D(image, i,j); double y=0.299*pix.val[2]+0.587*pix.val[1]+0.114*pix.val[0]; но если у меня картинка серая, возмножно ли узнать значение серого оттенка этого пикселя сразу без использования cvGet2D? Спасибо Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано June 6, 2012 В IplImage есть: char *imageData; - здесь лежат данные int widthStep; - это шаг по вертикали в байтах, он не равен количеству пикселей (учитывает выравнивание). Значение пикселя (если тип данных char) будет I=img->imageData[x+img->widthStep*y]; Думаю этого для ответа на Ваш вопрос хватит. 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
McBodik 0 Жалоба Опубликовано June 6, 2012 В IplImage есть: char *imageData; - здесь лежат данные int widthStep; - это шаг по вертикали в байтах, он не равен количеству пикселей (учитывает выравнивание). Значение пикселя (если тип данных char) будет I=img->imageData[x+img->widthStep*y]; Думаю этого для ответа на Ваш вопрос хватит. не совсем понимаю. если тип char, тогда что какой результат будет выдаватся? это же не будет число… Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано June 6, 2012 Все в компьютере есть число char - это тип данных размером 8 бит = 1 байт. если данные хранятся в другом формате, то типы нужно преобразовывать. Возьмите любой учебник по C/C++. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано June 7, 2012 Значение пикселя (если тип данных char) будет I=img->imageData[x+img->widthStep*y]; Поправлю. В более общем случае, цвет пикселя лучше получить так: CvScalar pixel_color; for (int i = 0; i < img->nChannels; ++i) { pixel_color.val[i] = (uchar)img->imageData[x + i + img->widthStep * y]; } В результате pixel_color будет хранить правильный цвет для всех цветовых простанств. 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах