2009-12-15
今天做了这步,把从相机采来的BYTE * m_pimagebuffer数据,要在界面上以图像的形式表达出来,并且能够进行后续的图像处理。
首次尝试了opencv来做,感觉就像,matlab 里的仿真似的,相当容易,只需调用就OK了。
CvSize cvSize;
cvSize.width = Width;
cvSize.height = Height;
//生成支持OPENCV的IPLIMAGE数据结构,并使用相机采集的图像数据初始化
IplImage *iplImage = cvCreateImageHeader(cvSize,IPL_DEPTH_8U,3);
cvSetData(iplImage,m_pImageBuffer,Width*3);
//申请灰度空间,将BGR格式转化为灰度数据
IplImage *iplgray = cvCreateImage(cvGetSize(iplImage),IPL_DEPTH_8U,1);
cvCvtColor(iplImage,iplgray,CV_BGR2GRAY);
//为CANNY图像申请空间
IplImage *iplCanny = cvCreateImage(cvGetSize(iplImage),IPL_DEPTH_8U,1);
//使用OPENCV提供的CANNY边缘检测函数
cvSmooth(iplgray,iplCanny,3,3,0,0);
cvNot(iplgray,iplCanny);
cvCanny(iplgray,iplCanny,50,150,3);
//根据灰度图生成BGR图
IplImage *ipltemp = cvCreateImage(cvGetSize(iplImage),IPL_DEPTH_8U,3);
cvZero(ipltemp);
cvCopy(iplImage,ipltemp,iplCanny);
//从LPLIMAGE数据结构中提取图像数据
memcpy(m_pImageBuffer,(BYTE*)ipltemp->imageData,Height*Width*3);
//释放申请的图象空间
cvReleaseImage(&iplgray);
cvReleaseImage(&iplCanny);
cvReleaseImage(&ipltemp);
网友评论