Как мне получить доступ к пикселю в OpenCV? - PullRequest
3 голосов
/ 24 сентября 2011

У меня есть координаты точки x, y, как бы я использовал это для доступа к определенной точке IplImage?

Спасибо

Ответы [ 2 ]

7 голосов
/ 24 сентября 2011

Используйте CV_IMAGE_ELEM

CV_IMAGE_ELEM( image_header, elemtype, y, x*N+C )

Например, для 8-битного 3-канального канала (например, RGB) IplImage* img, нам нужно (x,y) на 2-м канале:

CV_IMAGE_ELEM(img, uchar, y, (x * 3) + 1))
3 голосов
/ 24 сентября 2011

ИЛИ, вы можете сделать это.подробнее о матричной операции смотрите здесь.

http://note.sonots.com/OpenCV/MatrixOperations.html

     int col, row, z;
     uchar b, g, r;
     for( y = 0; row < img->height; y++ )
     {
       for ( col = 0; col < img->width; col++ )
       {
         //for( z = 0; z < img->nChannels; z++ )
         //{
         //   c = img->imageData[img->widthStep * row + col * img->nChannels + z];
         //}
         b = img->imageData[img->widthStep * row + col * 3]
         g = img->imageData[img->widthStep * row + col * 3 + 1];
         r = img->imageData[img->widthStep * row + col * 3 + 2];
       }
     }
...