vs2010 + opencv用自定义工具打开图片并显示
来源:互联网 发布:十二宫杀手解析知乎 编辑:程序博客网 时间:2024/09/21 06:36
步骤
一、新建项目
单击菜单栏的文件->新建->项目
选择Visual C++,MFC应用程序,名称为CSDN_demo,选择好路径,然后单击“确定”
再单击“下一步”。此时,按照下图来选择各个项。
选择“基于对话框”、不使用Unicode库,选择“在静态库中使用MFC”,单击“完成”。
完成后,会出现一个编辑对话框的界面。
二、配置OpenCV环境
由于本人之前配置过环境,而且过程繁琐,因此,这里就不再重复。详细过程参考:http://blog.csdn.net/liuqinglong110/article/details/30051219
(当然有些人的做法是:在项目属性中加载lib文件:菜单 项目->属性-> 配置属性-> 链接器–>输入-> 附加依赖库中加入 cxcore200.lib cv200.lib highgui200.lib这三个库。 然后在 mymfc.h 的 #include "resource.h" 下加入如下代码:#include “cv.h” #include “highgui.h”。注意:用英文分号隔开。这种方法的有效性,本人并没有亲自验证过。 转自:http://blog.csdn.net/aaahuanian/article/details/8027210)
三、添加和设置控件
在菜单栏中,视图->工具箱,此时就打开了控件的工具箱。选择工具箱中的Button控件,并将其拖到对话框相应的位置。
右击Button控件,选择属性,将其Caption改为OpenImg。
添加Picture Control控件到对话框的相应位置,并调整控件的大小。
右击Picture Control控件,选择属性,打开控件属性对话框,如下图,保持ID属性不变,修改Type属性为Rectangle。
现在为按钮添加处理程序,右击OpenImg按钮,选择“添加事件处理程序”,此时出现向导界面。消息类型选择BN_CLICKED,类列表选择CCSDN_deomDlg,函数处理 程序名选择OnBnClickedOpenImg,单击“添加编辑”。
四、添加OpenCV旧版本中的CvvImage.h和CvvImage.cpp文件
如首先添加CvvImage.h,则右击解决资源方案管理器中的“头文件”-> “添加”->” CvvImage.h”
然后再用类似的方式,在“源文件”的文件夹下添加“CvvImage.cpp”。
注意:CvvImage.h和CvvImage.cpp这两个文件要和本项目中的其他cpp文件等放在同一个文件夹中。
五、添加代码
在解决方案管理器中双击打开CSDN_demoDlg.h.
在#pragma once的下一行添加如下代码:
#include "cv.h"
#include "highgui.h"
#include "CvvImage.h"
注意:若"CvvImage.h"不在工程的包含目录中,则需要写成完整路径,并且“\”要写成“\\”,如:F:\\CvvImage。建议还是放在工程的包含目录中,这样使用相对路径可以避免一些不必要的麻烦。(这三行代码应该)
在CSDN_demoDlg.h文件中CSDN_demoDlg类的声明中添加函数DrawPicToHDC()的声明:void DrawPicToHDC(IplImage *img, UINT ID);。
(其实这个函数名DrawPicToHDC()不是固定的,只要函数声明和定义的名称一致就可以了。)
在CSDN_demoDlg.cpp中添加DrawPicToHDC()的函数定义:
void CCSDN_demoDlg::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 );}
在按钮OpenImg的响应函数中添加代码:
void CCSDN_demoDlg::OnBnClickedOpenImg(){ IplImage *image=NULL; //原始图片if(image) cvReleaseImage(&image);CFileDialog dlg( TRUE,_T("*.bmp"), NULL, OFN_FILEMUSTEXIST| OFN_PATHMUSTEXIST | OFN_HIDEREADONLY, _T("imagefiles (*.bmp; *.jpg) |*.bmp; *.jpg; *.jpeg | All Files (*.*) |*.*||"),NULL ); //选项图片的约定。 dlg.m_ofn.lpstrTitle= _T("打开图片"); //打开文件对话框的标题吗 if(dlg.DoModal() != IDOK ) //判断是否获得图片 return; CStringmPath = dlg.GetPathName(); //获取图片路径 IplImage*ipl = cvLoadImage( mPath, 1 ); //读取图片、缓存到一个局部变量ipl中 if(!ipl ) //判断是否成功读取图片 return; ShowImage(ipl,IDC_STATIC); // 调用显示图片函数 cvReleaseImage(&ipl ); //释放ipl占用的内存 }
六、运行
- vs2010 + opencv用自定义工具打开图片并显示
- 用opencv打开、显示并保存jpg图片
- 利用opencv+QT打开并显示图片
- opencv图像处理2--打开图片并显示
- 用OpenCV载入并显示图片
- 用OpenCV载入并显示图片
- VS2010 / MFC + OpenCV 2.4.1打开图片
- VS2010 / MFC + OpenCV 2.4.1打开图片
- VS2010 / MFC + OpenCV 2.4.3 打开图片
- VS2010 / MFC + OpenCV 2.4.1打开图片
- VS2010 / MFC + OpenCV 2.4.9打开图片
- VS2010 / MFC + OpenCV 2.4.1打开图片
- VS2010 / MFC + OpenCV 2.4.1打开图片
- VS2010 / MFC + OpenCV 2.4.1打开图片
- Halcon联合VS2010打开相机并显示
- 打开相册并显示图片
- 【OpenCV】加载并显示图片
- opencv载入并显示图片
- qt creator 在linux系统加载动态连接库
- 解压
- 编码问题:unicode与utf-8,wchar_t与char
- Android 动画实践
- 进击的KFC:OC(六)Block
- vs2010 + opencv用自定义工具打开图片并显示
- LeetCode——Search a 2D Matrix II
- 【PAT】1099. Build A Binary Search Tree (30)
- 2015年6月美国San Diego之旅
- 黑马程序员--接口和多态
- [算法]动态规划 多重背包 二进制优化
- Fragment基础点滴学习---静态加载
- CXF的三种发布方式和客户端调用方法
- java 偏执却管用的10条Java编程技巧