inline void setPixel(IplImage *image,int x,int y, unsigned char *param) {
image->imageData[y*image->widthStep + x*image->nChannels] = param[0]; //B
image->imageData[y*image->widthStep + x*image->nChannels + 1] = param[1]; //G
image->imageData[y*image->widthStep + x*image->nChannels + 2] = param[2]; //R
}
といった関数を用意し、
IplImage* image;
image = cvLoadImage("./test.jpg");
cvNamedWindow("RGBSetTest");
unsigned char param[] = {30,30,30};
for(int y = 0; y < 300; y++) {
for(int x = 50; x < 200; x++) {
setPixel(image,x,y,param);
}
}
cvShowImage( "RGBSetTest", image );
cvWaitKey(0);
cvDestroyWindow("RGBSetTest");
といった形で設定してしまうなども一つの手。
他にも、cvSet2Dという関数があるらしい。
尚、HSV等で指定する場合にはcvSplitで分けてから、
cvSet等で設定するのが無難か。
最終更新:2011年04月03日 18:50