在写的过程中,参考了网上许多网友的blog,在此谢过。如有雷同,不是巧合。
一、OpenCV3.0的配置(百度)
1、 opencv下载:
具体下载地址,http://opencv.org/,因为我的操作系统是win7,所以选择了基于windows的opencv最新版opencv3.0.0。
2、 opencv解压
opencv下载完成后是一个rar文件,直接解压到要放的文件夹里,我是放在了D:\Program Files里。总共解压后会有四个文件:build、sources、LICENSE.txt、README.md.txt。
3、 设置电脑的环境变量
计算机——>右键——>属性——>高级系统设置——>高级——>环境变量——>系统变量——>path,在path里添加D:\ProgramFiles\opencv\build\x64\vc12\bin;D:\Program Files\opencv\build\x86\vc12\bin。(因为我的电脑是64位的,所以就添加X64。)
4、 opencv配置
新建一个win32控制台应用程序项目,打开此项目的属性管理器,如项目名为test,则属性管理器下会有Debug|win32和Release|win32。
(1)双击Debug|win32的Microsoft.Cpp.Win32.user,会打开属性页,在VC++目录中的包含目录中添加:
D:\Program Files\opencv\build\include
D:\ProgramFiles\opencv\build\include\opencv
D:\ProgramFiles\opencv\build\include\opencv2。
在库目录中添加:
D:\Program Files\opencv\build\x64\vc12\lib
D:\Program Files\opencv\build\x86\vc12\lib
为了防止漏洞,我特地加上了32位的库目录。
在链接器中,单击输入,选择附加依赖项opencv_ts300d.lib、opencv_world300d.lib。
(2)双击Release|win32的Microsoft.Cpp.Win32.user,在链接器中,单击输入,选择附加依赖项opencv_ts300.lib、opencv_world300.lib二、图片显示
(一)控制台型的图片显示
1、建立控制台项目
2、
3、预编译头的“√”去掉,同时勾选“空项目”
4、在解决方案中添加新建项
5、添加.cpp文件
6、在main.cpp文件中添加如下代码
#include<iostream>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
using namespace std;
int main()
{
cv::Mat img = cv::imread("D:\\image\\baboon.jpg");
cv::imshow("Picture",img);
cv::waitKey(6000);
return0;
}
7、效果显示(二)MFC中的图片显示
1、菜单,文件 - 新建 - 项目
2、Visual C++,MFC应用程序,名称为PictureShow
3、下一步
4、基于对话框,不使用Unicode库,在静态库中使用MFC,完成
5、出现如下界面
6、添加Button按钮
7、修改属性
8、添加Picture Control控件,右击Picture控件,属性,打开控件属性窗口,其ID为IDC_STATIC,修改Type为Rectangle
9、右击按钮,添加事件处理程序
10、选择BN_CLICKED,类列表为CPictureShowDlg,函数名为OnBnClickedOpenButton,添加编辑
11、添加OpenCV的CvvImage文件
右击解决资源方案管理器中的头文件,添加,现有项,选择CvvImage.h
12、同样,源文件中添加CvvImage.cpp
13、添加代码
在类视图或解决方案管理器中双击打开PictureShowDlg.h
14、在PictureShowDlg.h文件中CPictureShowDlg类的声明中添加函数DrawPicToHDC()的声明
void DrawPicToHDC(IplImage *img,UINT ID);
15、在PictureShowDlg.cpp文件中添加函数
voidCPictureShowDlg::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 );
}
16、在新增按钮的响应函数中添加代码为如下
voidCPictureShowDlg::OnBnClickedOpenButton()
{
// TODO: 在此添加控件通知处理程序代码
IplImage *image=NULL; //原始图像
if(image) cvReleaseImage(&image);
image =cvLoadImage("D:\\image\\baboon.jpg",1); //显示图片
DrawPicToHDC(image, IDC_STATIC);
}
17、编译运行
点击菜单下方工具栏中的绿色向右箭头即可编译生成程序
18、点击Open Imae按钮即可打开D:\image\baboon.jpg并显示在Picture控件上