sigizmynd 0 Жалоба Опубликовано March 25, 2010 Здравствуйте. у меня такой вопрос. в OpenCV есть много стандартных алгоритмов. Но некоторые из них хотелось бы сделать своими руками, для закрепления понимания работы с изображениями. получить цветовые характеристики пикселов нету проблемы, но вот проблемы с выводом получившегося изображения. Т.е. хочу перевести изображение в grayscale. формула для перевода есть, значения пикселов есть, но вот как вывести получившиеся значения интенсивности на экран? можно ли обращаться к элементу IplImage и напрямую в него записывать данные. можно ли с ним работать как с двухмерным массивом. помогите, пожалуйста. --------------------------------------------- всё-таки методом тыка нашёл способ вывода изображения после обработки, но столкнулся с небольшой проблемой: у конечного (моего) изображения в самом низу отсутствует цвет. только строчки с шумом. в чём может быть причина? вот код: cvCvtPixToPlane(image,R,G,B,0); uchar* ptrRed,*ptrGreen,*ptrBlue; uchar arr[Height*Width]; ptrGreen = (uchar*)(G->imageData); ptrBlue = (uchar*)(B->imageData); ptrRed = (uchar*)(R->imageData); int x, y; for(y = 0; y < Height; y++) { for(x = 0; x < Width; x++) { arr[y*Width+x] = 0.3*ptrRed[y*Width+x] + 0.59*ptrGreen[y*Width+x] + 0.11*ptrBlue[y*Width+x]; } } Black->imageData = (char*)arr; может быть дело в приведении типа? или можно сделать как-то по-другому? прикрепляю принтскирн. работаю на виртуальной машине мандрива. слева изображение, обработанное стандартной функцией, справа моё. внизу изображения виден шум. спасибо. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано March 25, 2010 можно ли обращаться к элементу IplImage и напрямую в него записывать данные. Можно. можно ли с ним работать как с двухмерным массивом. Можно. Это же обычная структура. Посмотри на её поля их значения - сразу всё станет ясно. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах