2009年5月18日 星期一

OpenCV - 如何將IplImage型態的image轉換為unsigned char的形式供後續處理?

// start capturing frames from camera
// 0:autodetect

CvCapture *camera = cvCreateCameraCapture(0);
// 確認camera不為NULL
assert(camera);
IplImage *image = cvQueryFrame(camera);
// 確認camera不會NULL
assert(image);
// 求得image的影像大小資訊
CvSize imgSize;
imgSize = cvGetSize(image);
// 將IplImage型態的 image 轉換為 BYTE的image_rawdata
void *image_rawdata;
cvGetImageRawData( image, ( uchar** )&image_rawdata, 0, &imgSize );
// image 是3個channel (RGB) image_rawdata 的大小為 Height * Width * 3
for(j = 0; j < imgSize.height ; j ++) for(i = 0; i < imgSize.width ; i ++)
{
// 取得第(i,j) pixel 的 R、G、B值
B = image_rawdata[(j * imgSize.width + i) * 3 + 2];
G = image_rawdata[(j * imgSize.width + i) * 3 + 1];
R = image_rawdata[(j * imgSize.width + i) * 3 + 0];
}


參考資料:
OpenCV DIY手冊

沒有留言: