继上文,做好opencv的配置以后,很多时候要用的就是显示图片,后面要讲的显示视频和一些测试也是建立在显示图片的基础上的,本次将分享opencv通过win32控制台显示图片和MFC显示图片:
一:OpenCV+win32
建立好win32空文档后,添加新项cpp文件后,直接上代码:
#include "highgui.h" //这个头文件很多时候都会用到,在opencv中 int main() { IplImage* img = cvLoadImage( "E:\\lena.jpg");//加载图片,用iplimage类型的指针指向文件地址 cvNamedWindow("Example", CV_WINDOW_AUTOSIZE );//命名一个example的窗口,窗口属性为CV_WINDOW_AUTOSIZE,还有其他属性,自己可以了解一下 cvShowImage("Example", img );//在名字为example的窗口显示img cvWaitKey(0);//等待,如果不加这句,基本就是一闪而过 cvReleaseImage( &img );//释放资源 cvDestroyWindow("Example");//摧毁窗口 return 0; }
二:OpenCV+MFC
新建MFC项目,我选的是对话框,在对话框中拖入picture控件,假设id号为IDC_STATIC2,和一个按键button,假设name为button1
//以下为showimage函数,用来在指定的id控件中显示图片 void CtestDlg::ShowImage(IplImage* img, UINT ID)// ID 是Picture Control控件的ID号 { CDC* pDC=GetDlgItem(ID)->GetDC();// 获得显示控件的 DC HDC hDC=pDC->GetSafeHdc();// 获取 HDC(设备句柄) 来进行绘图操作 CRect rect; GetDlgItem(ID)->GetClientRect(&rect); CvvImage cimg; cimg.CopyOf(img); // 复制图片 cimg.DrawToHDC(hDC,&rect); ReleaseDC(pDC); } void CtestDlg::OnBnClickedbutton1()//按键的响应函数 { IplImage* img = cvLoadImage( "E:\\lena.jpg"); ShowImage(img, IDC_STATIC2);//调用showiamge函数在picture控件中显示图片 cvReleaseImage( &img );//释放 }
注:我建立的名为test的项目,所以类也是test,,mfc新建过后就会出现很多代码,而且直接运行就可以看见界面,我这里主要给出关键的函数和实现,没有在类中的声明。。参考写就一定会成功的。
显示图片就基本结束了,如果有什么不对的,还请大家指出,相互学习
OpenCV基础篇——图片显示
时间: 2024-11-09 22:55:55