用OpenCV载入并显示图片
前面我介绍过借助于GDI+打开和显示图片,今天我们看一下如何用OpenCV显示图片。
附:基于对话框的图片打开与显示:
http://blog.csdn.net/zhixingzhe/archive/2009/09/10/4537130.aspx
要使用OpenCV,首先需要下载并成功安装OpenCV。这可到OpenCV中文网站下载,以及OpenCV的正确配置,在此不一一赘述。只提供OpenCV 1.0的下载地址:
http://www.opencv.org.cn/download/OpenCV_1.0.exe
首先我们在头文件里定义变量
public:
IplImage* src;
IplImage* dst;
在OnInitDialog()函数中初始化:dst = NULL;src = NULL;
然后我们新建一个按钮——载入并显示图片,然后添加它的鼠标单击消息响应函数。代码如下:
CString fileName;
//打开文件对话窗口
CFileDialog dlg(TRUE,"jpg","*.jpg",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"JPEG文件(*.jpg)|*.jpg||",NULL);
//从文件对话窗口中打开图像
if(dlg.DoModal()!=IDOK)
return;
fileName = dlg.GetPathName();
std::string tempName = (LPCSTR)CStringA(fileName);
const char* bbb = tempName.c_str();
if( (src = cvLoadImage(bbb, CV_LOAD_IMAGE_ANYCOLOR)) == 0 )
return;
dst= cvCreateImage(cvGetSize(src), src->depth, src->nChannels);
cvCopy(src, dst, NULL);
cvNamedWindow( "显示图像", 1 );//创建窗口
cvShowImage( "显示图像", src );//显示图像
最后在对话框的OnDestroy事件中释放所有资源,并关闭预览窗口
void CDisplayDlg::OnDestroy()
{
CDialog::OnDestroy();
// TODO: 在此处添加消息处理程序代码
cvReleaseImage(&src);
cvReleaseImage(&dst);
cvDestroyAllWindows();
}
编译运行,任意打开一幅图片,效果如下图:
注意,事先一定要正确配置OpenCV!