Игорь 0 Жалоба Опубликовано May 30, 2011 Всем привет!!!! есть задачка не могу спаравиться!!! Имеется монохромная картинка, черный текст на белом фоне!!! 1. надо заменить черный цвет на красный(например)!!! 2. И возможно ли вообще заменить задний белый фон на прозрачный!!! картинка вот такого типа Заранее спасибо!!!! Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
TroyashkA 12 Жалоба Опубликовано May 31, 2011 Тебе нужно получить доступ к матрице http://www.troyashka.ru/2011/01/opencv.html Пункт 14, а лучше почитать с начала. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Игорь 0 Жалоба Опубликовано May 31, 2011 Тебе нужно получить доступ к матрице http://www.troyashka.ru/2011/01/opencv.html Пункт 14, а лучше почитать с начала. Спасибо разобрался!!! для конвектирование цветов теперь буду делать как-то так for( int y=0; y<rgb->height; y++ ) { uchar* ptr = (uchar*) (rgb->imageData + y * rgb->widthStep); for( int x=0; x<rgb->width; x++ ) { // 3 канала // ptr[3*x] = 0; // B - синий // ptr[3*x+1] = 0; // G - зелёный // ptr[3*x+2] = 255; // R - красный if (ptr[3*x+2]==0) {ptr[3*x+2]=255;} qDebug("%d,%d,%d",ptr[3*x],ptr[3*x+1],ptr[3*x+2] ); } } А вот с прозрачностью так и не знаю куда рыть!!!!! может кто-то уже имел опыт с прозрачностью??? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано May 31, 2011 note that the functions do not support alpha-transparency - when the target image is 4-channnel, then the color[3] is simply copied to the repainted pixels. Thus, if you want to paint semi-transparent shapes, you can paint them in a separate buffer and then blend it with the main image. cvAddWeighted Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Игорь 0 Жалоба Опубликовано May 31, 2011 cvAddWeighted Спасиобо!!! ясно. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
L@MER 6 Жалоба Опубликовано February 27, 2012 Всем привет!!!! есть задачка не могу спаравиться!!! Имеется монохромная картинка, черный текст на белом фоне!!! 1. надо заменить черный цвет на красный(например)!!! Имеется похожая проблема, но с более простой задачей - есть монохромное изображение (черные и белые пиксели). Необходимо инвертировать цвета. Черные пиксели в белые, а белые в черные. Нетли часом в OpenCV готовой функции? Или придется делать что-то навроде кода приведенного топикстартером? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано February 27, 2012 Mat Img; ....... ....... Img=255-Img;[/code] пойдет? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
L@MER 6 Жалоба Опубликовано February 27, 2012 Mat Img; ....... ....... Img=255-Img; пойдет? как вариант, да. А вот такая функция поможет? cvNot(img, img) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано February 27, 2012 это же bit-wise inversion , то есть 00110011 -> 11001100 если такое пойдет, то поможет. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
L@MER 6 Жалоба Опубликовано February 27, 2012 это же bit-wise inversion , то есть 00110011 -> 11001100 если такое пойдет, то поможет. Должно пойти - у меня картинка после бинаризации. Я думаю применив эту функцию я получу именно полную инверсию пикселей. Вот нашел пример применения данной функции (там ещё много разного помимо неё): Инверсия и прочее Вот сам код: Inverting the image such as giving a NOT logic operation on each element matrix. #include "cv.h" #include "cxcore.h" #include "highgui.h" int main(int argc,char* argv[]) { IplImage *img = cvLoadImage("Step_forward.jpg"); IplImage *img2= cvCreateImage( cvGetSize(img), 8,1 ); img2 = cvCloneImage(img); cvNot(img2, img2); cvShowImage("Image:",img); cvShowImage("Negative", img2); cvWaitKey(); cvReleaseImage(&img); cvReleaseImage(&img2); return 0; } 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано February 27, 2012 Для целых это пойдет, а по поводу float или double не могу сказать точно. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
L@MER 6 Жалоба Опубликовано February 27, 2012 Для целых это пойдет, а по поводу float или double не могу сказать точно. Это да, согласен. Но в моем случае - как раз целые, так что попробую завтра применить Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
L@MER 6 Жалоба Опубликовано February 28, 2012 Получилось. Белые пиксели теперь черные, а черные - белые! Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах