OpenCV图片加载,显示,抠图与保存

来源:互联网 发布:公安信息化大数据应用 编辑:程序博客网 时间:2024/05/22 12:01

利用CvRect和CvSetImageROI从指定图片中指定位置抠图,并把图片显示在界面中或者保存在本地。

IplImage* img = cvLoadImage("D:\\Demo.jpg");//加载一张图片到内存
IplImage* imgtemp = NULL;
//标注img图片中,cvRect(0,0,100,100)区域为感兴趣区域
//在调用cvResetImageROI(img)语句之前,对img的一切操作都是
//只针对标记区域的操作。
cvSetImageROI(img,cvRect(0,0,100,100));
//创建一个图片用于保存抠出来的图片,因为CvCopy()函数要求
//两图片大大小和类型一样所以这里用cvGetSize(img)。
imgtemp = cvCreateImage(cvGetSize(img),8,3);
cvCopy(img,imgtemp);
cvResetImageROI(img);
//把图片显示到MFC对话框中ID为IDC_STATIC的控件上。
//后面会附上DrawPicToHDC的具体实现。
DrawPicToHDC(imgtemp,IDC_STATIC);
//保存抠出来的图片
cvSaveImage("D:\\Demo2.jpg",img)

把imgtemp显示到单独的界面中。

cvNamedWindow( "donkeyaime", CV_WINDOW_AUTOSIZE );cvShowImage( "donkeyaime", imgtemp );cvWaitKey(0);cvReleaseImage( &img );
DrawPicToHDC的具体实现。

void ClassName::DrawPicToHDC(IplImage *img,UINT ID){CDC *pDC = GetDlgItem(ID)->GetDC();HDC hDC = pDC->GetSafeHdc();CRect rect ;GetDlgItem(ID)->GetClientRect(&rect);CvvImage cimg ;cimg.CopyOf(img);cimg.DrawToHDC(hDC,&rect);ReleaseDC(pDC);}




原创粉丝点击