あなたが見ているなら、それはではなく、frame->imageSize
であることを覚えておいてください。frame->height * frame->widthStep
frame->height * frame->width
BGRはOpenCVのネイティブ形式であり、RGBではありません。
また、始めたばかりの場合は、C ++インターフェイス(MatがIplImageを置き換える)の使用を検討する必要があります。これは将来の方向性であり、操作がはるかに簡単だからです。
ピクセルデータに直接アクセスするサンプルコードを次に示します。
int main (int argc, const char * argv[]) {
IplImage *frame = cvCreateImage(cvSize(41, 41), IPL_DEPTH_8U, 3);
for( int y=0; y<frame->height; y++ ) {
uchar* ptr = (uchar*) ( frame->imageData + y * frame->widthStep );
for( int x=0; x<frame->width; x++ ) {
ptr[3*x+2] = 255; //Set red to max (BGR format)
}
}
cvNamedWindow("window", CV_WINDOW_AUTOSIZE);
cvShowImage("window", frame);
cvWaitKey(0);
cvReleaseImage(&frame);
cvDestroyWindow("window");
return 0;
}