IplImage* imgA = cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1); ... ... reinterpret_cast<unsigned char *>(imgA->imageData + y*imgA->widthStep)[x]=255; //(x,y)の位置を255にする
IplImage* imgA=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,3); ... ... reinterpret_cast<unsigned char *>(imgA->imageData + y*imgA->widthStep)[x*imgA->nChannels]=0; //B reinterpret_cast<unsigned char *>(imgA->imageData + y*imgA->widthStep)[x*imgA->nChannels+1]=0; //G reinterpret_cast<unsigned char *>(imgA->imageData + y*imgA->widthStep)[x*imgA->nChannels+2]=0; //R
for(int y = 50; y < 100 ; ++y) { for(int x = 100; x < 150; ++x) { reinterpret_cast<unsigned char *>(imgA->imageData + y*imgA->widthStep)[x*imgA->nChannels]=0; //B reinterpret_cast<unsigned char *>(imgA->imageData + y*imgA->widthStep)[x*imgA->nChannels+1]=255; //G reinterpret_cast<unsigned char *>(imgA->imageData + y*imgA->widthStep)[x*imgA->nChannels+2]=0; //R } }といった感じで書くことができる。
unsigned char* temp_ptr; temp_ptr = &( reinterpret_cast<unsigned char *>(imgA->imageData + y*imgA->widthStep)[x*imgA->nChannels] ) ;//ピクセル位置(x,y)について temp_ptr[0]= 255; temp_ptr[1]= 0; temp_ptr[2]= 255;
reinterpret_cast<float *>(imgA->imageData + y*imgA->widthStep)[x*imgA->nChannels]=0; //B
IplImage* imgA = cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1); ... ... imgA->imageData[y*imgA->widthStep + x] = 0;
IplImage* img = cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,3); ... ... img->imageData[y*img->widthStep + x*img->nChannels] = 100; img->imageData[y*img->widthStep + x*img->nChannels + 1] = 100; img->imageData[y*img->widthStep + x*img->nChannels + 2] = 100;
IplImage* img = cvCreateImage(cvSize(640,480),IPL_DEPTH_32F,3); ... ... int step = img->widthStep/sizeof(float); //バイトサイズで割る float * data = (float *)img->imageData; //floatのポインタとしてわたす data[y*step+x*img->nChannels] = 150; data[y*step+x*img->nChannels+1] = 150; data[y*step+x*img->nChannels+2] = 150;
for(int y = 50; y < 100 ; ++y) { for(int x = 100; x < 150; ++x) { CV_IMAGE_ELEM(imgA,unsigned char,y,x*imgA->nChannels)= 0; CV_IMAGE_ELEM(imgA,unsigned char,y,x*imgA->nChannels+1)= 255; CV_IMAGE_ELEM(imgA,unsigned char,y,x*imgA->nChannels+2)= 0; } }