изменение значений пикселей через прямой доступ + opencv - PullRequest
0 голосов
/ 10 августа 2011

Есть ли проблема в этом коде, когда я просто пытаюсь вычесть значения пикселей изображений через прямой доступ к пикселям ..... Я предполагаю, что изображения имеют одинаковую высоту и ширину ... Всякий раз, когда я запускаю программа получаю полностью черную картинку .....

IplImage * img3 = cvCreateImage(cvSize(img1->height,img1->width),IPL_DEPTH_32F,3);
// img2 and img1 both are IplImage pointers
cvZero(img3);
long value;
for ( int row = 0 ; row < img2->height * img2->width ; row ++ ){
    value = &((uchar*)(img1->imageData))[row] - &((uchar*)(img2->imageData))[row] ; 
    img3->imageData[row] = value;

1 Ответ

0 голосов
/ 10 августа 2011

1) img2-> height * img2-> width вычисляется как константа перед циклом

2) Я не понимаю эту строку & ((uchar *) (img1-> imageData)) [row] - &((uchar *) (img2-> imageData)) [строка] - вы вычитаете указатель из другого указателя?Зачем?значение = img1-> imageData [строка] - img2-> imageData [строка];следует выполнить трюк

3) вы не можете вычитать значения RGB, вычитая значения пикселей (если это ваша цель)

4) если img3-> imageData равен * char, то вы должны умножитьстрока * 4.

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