显示图片,VS2010, MFC, OpenCV2

2024-06-08 03:18
文章标签 显示 图片 mfc opencv2 vs2010

本文主要是介绍显示图片,VS2010, MFC, OpenCV2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

VS2010 / MFC + OpenCV 2.4.1打开图片

Windows 7 x64VS2010/ MFC + OpenCV 2.4.1打开图片显示到Picture控件中。

OpenCV 2.2OpenCV2.3同样适用。

WinXP / Win7 x86 / x64 OpenCV2.2 / 2.3 / 2.4   Visual Studio 2010

Opencv2.2以后的版本就取消了CvvImage这个类,而显示图片到MFCPicture控件需要用到这个类,所以需要准备CvvImage.hCvvImage.cpp文件(从以前版本的源码中获得),

下载地址:http://dl.dbank.com/c04u6b8sxe

 

方法/步骤

1.    一、新建项目   :菜单,文件 - 新建 - 项目

2.    Visual C++MFC应用程序,名称为MFC_DEMO

3.    下一步                        

4.    基于对话框,不使用Unicode库,在静态库中使用MFC,完成

5.    出现如下界面      

6.    二、配置OpenCV环境

如果是初次配置OpenCV环境,需要在环境变量中增加以下路径(右击计算机,属性,打开控制面板,点击左侧高级系统设置,环境变量)

在系统变量的PATH中添加

;D:\ProgramFiles\opencv\build\x86\vc10\bin

注意是添加,原有项目千万不要删掉,每项之间以英文状态下的分号隔开

新建OPENCV项,其值为 D:\Program Files\opencv\build

其中本例中D:\Program Files\opencvOpenCV安装目录,根据你安装的情况自行修改。后文相同,不再复述。

7.    菜单,视图,属性管理器

8.    双击工程名称,打开属性页

9.    选择配置目录,VC++目录,包含目录,点击右侧下拉箭头,编辑

10.  点击右上角图标添加文件夹

11.  包含目录中添加

D:\Program Files\opencv\build\include

D:\ProgramFiles\opencv\build\include\opencv

D:\ProgramFiles\opencv\build\include\opencv2

 

12.  同样,在包含目录下方的库目录中添加

D:\ProgramFiles\opencv\build\x86\vc10\lib

链接器,输入,附加依赖项,编辑

 

13.  此处添加

opencv_core241d.lib

opencv_highgui241d.lib

opencv_video241d.lib

opencv_ml241d.lib

opencv_legacy241d.lib

opencv_imgproc241d.lib

如果你的OpenCV版本不是2.4.1,只需将文件名称后缀中的241修改为对应版本,具体可打开D:\Program Files\opencv\build\x86\vc10\lib(即前面添加的库目录)查看所需文件是否存在。

 

14.  在属性页左上角配置中选择Release

15.  弹出保存对话框,则选是

16.  同样,在Release页面附加依赖性中增加

opencv_core241.lib

opencv_highgui241.lib

opencv_video241.lib

opencv_ml241.lib

opencv_legacy241.lib

opencv_imgproc241.lib

文件名与前面相比,少了后缀"d"

点击确定,至此OpenCV环境已配置完成

17.  三、添加和设置控件

菜单,视图,工具箱,打开工具箱

 

18.  选中Button控件

19.  Button从工具箱向窗体拖动,添加按钮

20.  同理,添加Picture Control控件

21.  右击Picture控件,属性,打开控件属性窗口,其IDIDC_STATIC,修改TypeRectangle

22.  Picture控件大小调整合适,如图

23.  右击添加的按钮,属性

24.  可将Caption改为OpenImg

25.  右击按钮,添加事件处理程序

26.  选择BN_CLICKED,类列表为CMFC_DEMODlg,函数名为OnBnClickedOpenImg,添加编辑

27.  四、添加OpenCVCvvImage文件

右击解决资源方案管理器中的头文件,添加,现有项,选择CvvImage.h

 

28.  同样,源文件中添加CvvImage.cpp

29.  五、添加代码

在类视图或解决方案管理器中双击打开MFC_DEMODlg.h

 

30.  添加代码

#include "cv.h"
#include "highgui.h"
#include "E:\\CvvImage.h"

其中CvvImage.h若不在工程的包含目录中,则要有完整路径,“\”需要写成“\\”,如E:\\CvvImage

 

31.  MFC_DEMODlg.h文件中CMFC_DEMODlg类的声明中添加函数DrawPicToHDC()的声明

void DrawPicToHDC(IplImage *img,UINT ID);

 

32.  MFC_DEMODlg.cpp文件中添加函数

void CMFC_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 );
}

33.  在新增按钮的响应函数中添加代码为如下

void CMFC_DEMODlg::OnBnClickedOpenImg()
{
// TODO: 
在此添加控件通知处理程序代码
IplImage *image=NULL; //
原始图像
if(image) cvReleaseImage(&image);
image = cvLoadImage("D:\\demo.jpg",1); //
显示图片
DrawPicToHDC(image, IDC_ShowImg);
}

其中,D:\\demo.jpg为预先存储到D:\demo.jpg的已有图片文件,IDC_STATICPicture控件的ID

 

34.  六、编译运行

点击菜单下方工具栏中的绿色向右箭头即可编译生成程序

 

35.  点击OpenImg按钮即可打开D:\demo.jpg并显示在Picture控件上

 

 

这篇关于显示图片,VS2010, MFC, OpenCV2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1041078

相关文章

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

Android 10.0 mtk平板camera2横屏预览旋转90度横屏拍照图片旋转90度功能实现

1.前言 在10.0的系统rom定制化开发中,在进行一些平板等默认横屏的设备开发的过程中,需要在进入camera2的 时候,默认预览图像也是需要横屏显示的,在上一篇已经实现了横屏预览功能,然后发现横屏预览后,拍照保存的图片 依然是竖屏的,所以说同样需要将图片也保存为横屏图标了,所以就需要看下mtk的camera2的相关横屏保存图片功能, 如何实现实现横屏保存图片功能 如图所示: 2.mtk

Spring MVC 图片上传

引入需要的包 <dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-

Prompt - 将图片的表格转换成Markdown

Prompt - 将图片的表格转换成Markdown 0. 引言1. 提示词2. 原始版本 0. 引言 最近尝试将图片中的表格转换成Markdown格式,需要不断条件和优化提示词。记录一下调整好的提示词,以后在继续优化迭代。 1. 提示词 英文版本: You are an AI assistant tasked with extracting the content of

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

C# dateTimePicker 显示年月日,时分秒

dateTimePicker默认只显示日期,如果需要显示年月日,时分秒,只需要以下两步: 1.dateTimePicker1.Format = DateTimePickerFormat.Time 2.dateTimePicker1.CustomFormat = yyyy-MM-dd HH:mm:ss Tips:  a. dateTimePicker1.ShowUpDown = t

研究人员在RSA大会上演示利用恶意JPEG图片入侵企业内网

安全研究人员Marcus Murray在正在旧金山举行的RSA大会上公布了一种利用恶意JPEG图片入侵企业网络内部Windows服务器的新方法。  攻击流程及漏洞分析 最近,安全专家兼渗透测试员Marcus Murray发现了一种利用恶意JPEG图片来攻击Windows服务器的新方法,利用该方法还可以在目标网络中进行特权提升。几天前,在旧金山举行的RSA大会上,该Marcus现场展示了攻击流程,