RGB 8 бит CvMat из других данных - PullRequest
0 голосов
/ 15 марта 2011

У меня проблема с копированием данных в cvMat. Я пытался также создать структуру, но это не сработало. На выходе я получаю черное изображение. Это соответствующий код:

CvMat* rgbMat = cvCreateMat(480,640,CV_8UC3);
IplImage *kinectRgbImage;   
RgbImage = cvCreateImage( cvSize(640,480),8,3);

...stuff...
//from pImageMap you can access to the blue,red,green color parts of the image

for (int y=0; y<XN_VGA_Y_RES; y++)
{   
for(int x=0;x<XN_VGA_X_RES;x++)
{ 
rgbPointer[y * XN_VGA_X_RES + x ].blue= pImageMap[y * XN_VGA_X_RES + x].nBlue;
rgbPointer[y * XN_VGA_X_RES + x ].green= pImageMap[y * XN_VGA_X_RES + x].nGreen;
rgbPointer[y * XN_VGA_X_RES + x ].red= pImageMap[y * XN_VGA_X_RES + x].nRed;
}}

cvGetImage(rgbPointer,RgbImage); 
cvShowImage( "Rgb", RgbImage);

Я также пытался скопировать данные с

rgbMat->data.s[ 3 * (y * XN_VGA_X_RES + x ) + 0 ] = pImageMap[ 3 * (y * XN_VGA_X_RES + x ) + 0 ] .nBlue;

и другие способы, но никак ...

1 Ответ

0 голосов
/ 15 марта 2011

Он немного изменился с новым cv :: MAt в opencv2.2, но см. Доступ к отдельным цветам пикселей

I(x,y)blue ~ ((uchar*)(img->imageData + img->widthStep*y))[x*3]
I(x,y)green ~ ((uchar*)(img->imageData + img->widthStep*y))[x*3+1]
I(x,y)red ~ ((uchar*)(img->imageData + img->widthStep*y))[x*3+2]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...