トップページ > コンテンツ > その他のAPI、ライブラリ関係 > Opencv関連 > 画像にpixel単位でアクセスする方法 > pixel単位で輝度値を設定する方法

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