1 | initial version |
Following code snippet would help to load raw image to OpenCV Mat structure and then you can do further processing like demosaicing or some detection algorithms.
Mat img;
FILE *fp = NULL;
char *imagedata = NULL;
int framesize = IMAGE_WIDTH * IMAGE_HEIGHT;
//Open raw Bayer image.
fp = fopen("filename.raw", "rb");
//Memory allocation for bayer image data buffer.
imagedata = (char*) malloc (sizeof(char) * framesize);
//Read image data and store in buffer.
fread(imagedata, sizeof(char), framesize, fp);
//Image dimension.
imageSize.height = IMAGE_WIDTH;
imageSize.width = IMAGE_HEIGHT;
//Create Opencv mat structure for image dimension. For 8 bit bayer, type should be CV_8UC1.
img.create(IMAGE_HEIGHT, IMAGE_WIDTH, CV_8UC1);
memcpy(img.data, imagedata, framesize);
free(imagedata);
fclose(fp);
//Perform demosaicing process
cvtColor(img, RGBImage, CV_BayerBG2BGR);
Once color space is converted to BGR, further processing like edge detection or enhancement can be done. Hope this helps.