VS2012中MFC使用Picture Control显示OpenCV处理的图像

OpenCV + MFC 鼠标键盘控制截取图像 前面用Matlab完成过这样的工作,但是win7+64位系统上写的到了XP上用不了,也就懒得再继续了。直接用OpenCV和MFC写了,很简陋的界面和功能,倒也很快就完成了。还是那个想法,记录下留个纪念,能对别人有所帮助就更好了。因为有图像的操作,OpenCV还是很不错滴。在写的过程中,发现OpenCV对于鼠标键盘响应的操作也是灰常的便利呀。看来我真是孤陋寡闻呀… ^O^||| 阅读详情

VS2012中MFC中使用Picture Control控件显示OpenCV2.4.4版本中的cv::Mat类型的图片。

在高版本的OpenCV中没有CvvImage类,我们可以自己添加,下载CvvImage.h和CvvImage.cpp文件拷贝到工程目录下,通过向工程中添加“现有项”把这两个文件添加工程。

我们需要用到CvvImage中的两个函数CopyOf和DrawToHDC,CopyOf的参数必须是IplImage类型的,因此我们需要先把cv::Mat类型的图片转换为IplImage类型的。

假设:

cv::Mat类型变量为  matImg;

IplImage类型变量为 ipImg;

CvvImage类型变量为:cvvImg ;

cv::Mat到IplImage转换过程为:

ipImg = IplImage(matImg);

IplImage到CvvImage:

cvvImg.CopyOf(&ipImg) ;

把图片放到Picture Control控件中

CDC * pDC = GetDlgItem(IDC_PICTURE)->GetDC() ;

 

HDC hDC = pDC->GetSafeHdc() ;

myImage.DrawToHDC(hDC , &rect) ;

 

ReleaseDC(pDC) ;

补充:

从IplImage到cv::Mat的转换:

cv ::Mat  matImg(&ipImg , 0 );

 

在Picture Control控件中装载图片:

CImage image ;

image.Load(m_imagePath) ;//m_imagePath为图片路径

CRect rect ;

m_pictureCtl.GetClientRect(&rect) ;//获取图片控件客户区

 

CDC * pDC = m_pictureCtl.GetWindowDC() ;

image.Draw(pDC->m_hDC , rect) ;

ReleaseDC(pDC) ;

 

从打开颜色对话框中获取选中的颜色值:

COLORREF color = colorDlg.m_cc.rgbResult ;//colorDlg为打开的颜色对话框

m_colorArray[0] = GetRValue(color) ;

m_colorArray[1] = GetGValue(color) ;

m_colorArray[2] = GetBValue(color) ;

 

 

添加Vertical Scroll Bar后相应在类向导中添加WM_SCROLL消息响应:

响应函数

void CColorDetector_4Dlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)

{

// TODO: 在此添加消息处理程序代码和/或调用默认值

switch (nSBCode)

{

case SB_THUMBPOSITION:

m_scrollBar.SetScrollPos(nPos) ;

default:

break;

}

CDialogEx::OnVScroll(nSBCode, nPos, pScrollBar);

}

 

转换颜色空间的方法:

cv::cvtColor(image, converted, CV_BGR2Lab);//第三个参数是目的颜色空间

MFC图片自由鼠标交互(拖拽、鼠标滚动自由放大)的图片查看类 最近刚学GDI+,就想找个应用练练手,于是基于GDI+封装了此类,接口已经独立出来,使用十分方便,在MFC上直接使用(在VS2010 x64上编译,32位也可以),类的特定如下: 1.基于GDI+封装的类,文档和对话框可直接使用; 2.类初始化时可选择图片是否充满控件,充满的话,图片会适应控件的宽度进行缩放,但会保存原有的长宽比不变; 3.变换前后的坐标关系已经封装好,可直接调用; 4.缩放前后采样最临近点差值(windows图片查看器和PS都是采样这种差值方式,可能是因为效率比较高),具体差值方式可更改,参考一下GDI+就可以,如果想对图像像素进行操作,可使用GDI+的Bitmap类,可对图像像素点进行操作 立即下载

相关推荐

mfc 显示图片,鼠标截取一部分会显示在另一个控件上

mfc 显示图片,鼠标截取一部分会显示在另一个控件上

MFC 对话框中的picture control 控件显示图片

MFC读取图片一般使用自定义的DIB文件。DIB文件集中了处理图片的API函数,这样可以方便我们的图像操作。 DIB文件下载路径:DIB文件下载 MFC显示图片有几种方法:

小李的专栏 3871

vs2015+opencv3.3+mfc读取摄像头显示在图片控件Picture Control

在前辈的基础上做了一些改进,适用于vs2015+opencv3.3

MFC 图片控件图片加载以及鼠标移动事件和鼠标点击事件

首先展示一下效果!

hediping9811的专栏 5267

VS2008 opencv2.0 MFC打开任意文件夹图片,并可通过下拉菜单进行多种图片处理

基于VS2008 opencv2.0 MFC通过按钮打开任意文件夹图片,并可通过下拉菜单进行多种图片处理算法的选择

利用MFC的Picture控件显示图像和视频/摄像头画面(VS2008+OpenCV2.0)

利用MFC的Picture控件显示和处理图像,后面又添加了播放视频和捕获摄像头画面的功能,其中播放视频的功能只有 'Play' 和 'Stop',不能实现暂停

opencv+MFC显示图像

最近在做一个

hduzhouli 2272

VS2015MFC+Opencv2 打开图片及简单的图像处理

看网上的MFC+Opencv联合编程的东西,找了半天也没找到一个完全能用的,自己琢磨着写了一个,用了CvvImage类,打开图片显示,形态学处理,滤波处理等等操作

利用MFC中的picture control 控件显示图像

参考博文点击打开链接

XYLiu的专栏 2万+

Halcon结合MFC二次开发读取图片并处理图片.docx

Halcon结合MFC二次开发读取图片并处理图片.docx,内含有代码操作和实际代码演示,实现采集显示图片

kubernetes rook 安装 cephfs

ceph root kubernete osd uuid partuuid

天津托的博客 1543

OpenCV2.2版本以上显示图片到MFC 的picture control中

OpenCV 2.2 以及后面的版本取消掉了 CvvImage.h 和CvvImage.cpp 两个文件,直接导致无法调用里面的显示函数来将图片显示到 MFC 的 Picture Control 控件中。为此,网上很多人表示只要将这两个文件人为的添加到自己的工程里面就解决问题了,网上有这两个文件的源代码,但是这麻烦不说,还会导致一些奇奇怪怪的报错,自己在尝试的过程中遇到了很多问题,所以在了解了一些

Linda的博客 877

从Jira到Notion:用Sequential Thinking重构你的敏捷工作流(含GPT-6配置模板)

本文探讨了如何利用Sequential Thinking这一AI认知模型,重构敏捷开发工作流。通过连接Jira、Notion等工具,构建动态依赖图谱,实现从被动响应到主动规划的转变。文章提供了详细的配置教程和GPT-6配置模板,帮助团队实现任务自动拆解、智能看板生成与跨平台协调,从而提升项目管理效率。

gpt4scribbler的博客 206

利用MFC的Picture控件显示和处理图像

在《OpenCV教程-基础篇》的2.8节中,所创建的MFC图像显示是直接放在对话框面板的左上角的,感觉不大美观。在MFC快速应用opencv一书中则是介绍用SDI(单文档界面)来显示图像,《A step-by-step guide to the use of Microsoft Visual C++ and theIntel OpenCV library》使用VS2005来进行图像和视频的读取

zhusters的博客 7253

S7-1200g2运动控制实战:从轴组配置到程序调试

本文详细介绍了S7-1200g2运动控制功能的实战应用,从轴组配置到程序调试的全流程。通过TIA Portal中的工艺对象配置,实现单轴、同步轴组等运动控制模型,并分享常见问题排查与性能优化经验,帮助工程师快速掌握中小型自动化设备的运动控制技术。

weixin_28698059的博客 591

详解Unity中的粒子系统Particle System (五)

通过前几篇的学习,我们已经知道了粒子系统的几大基础模块的设置,有了这些模块的知识,我们足以做出惊艳的效果了。今天我们再学一个新的模块,叫做Noise模块,中文译为噪波、噪声、湍流模块等。这个模块的主要功能是让粒子随机化,有了随机化我们就可以模拟更自然的效果。如泡泡的空气中飘荡、一团苍蝇在嗡嗡乱撞,又或者是雪花飘飘、尘土飞扬等场景。下面我就来讲解一下何为Noise。

梦小天幼的博客 6107

MFC 截图功能实现(2)

使用MFC实现截图功能,界面有编辑文字,框选,椭圆,编辑文字,撤销,取消,保存等操作,使用vs2013编译,支持md,mdd项目。

u011269801的专栏 1114

史上最强量化工具库 Ta-Lib 从入门到精通,一篇文章就够了!

Ta-Lib 提供的 13 个关键指标,并配上详细的代码示例,确保你看完就能直接上手!🔥。

奔跑的蜗牛 9936

mfc中鼠标响应事件截取roi区域

首先对需要的控件创建鼠标响应函数,在项目—类导向——消息中,找到onlbuttondown,onmove和onlbuttonup,添加至可用后双击就可以出现编辑函数。在函数中进行编辑 在头文件中添加: CImage t_img; BOOL move_flag; BOOL down_flag; BOOL up_flag; int show_width; int show_heig...

小陆的博客 1438

从仿真到实机:四足机器人控制算法的全流程验证框架

本文系统阐述了四足机器人从仿真到实机的全流程验证框架。针对仿真与实机环境的巨大差异,文章详细介绍了在MuJoCo等高保真仿真环境中的建模、算法迭代与压力测试方法,并重点解析了通过硬件抽象层和中间件搭建通往实机的关键桥梁。最后,提供了实机部署的安全清单与调试策略,旨在帮助开发者构建可重复、风险可控的算法验证闭环,提升算法在真实世界中的鲁棒性与可靠性。

lilh34434的博客 384

微信8.0所有URL Scheme大全:隐藏入口与使用场景详解 内附195条微信URL Scheme

URL Scheme 类似于一个协议地址,它的作用和网页的https://差不多,只不过它不是打开网页,而是直接跳转到微信App内部的功能页面。→ 打开微信扫一扫→ 打开零钱通详情→ 打开微信面对面支付微信功能的“快捷指令”。整理下来,微信的 URL Scheme 基本覆盖了支付、联系人、扫一扫、小程序、运动设备等多个入口。对开发者来说,这些 Scheme 就像是隐藏的快捷通道,在某些场景(比如支付唤起、活动红包、客服入口)能大大简化流程。微信对外部调用限制非常严格。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 2221

MFC截取屏幕图片并保存

在MFC中进行屏幕截屏并保存,主要用于在程序运行过程中记录界面的变化,如图形、曲线、数据等。

weixin_46405486的博客 2309

【FastDDS】Discovery ( 01-overview )

Fast DDS 提供了多种发现机制用于自动匹配数据写入器和读取器,包括简单发现(默认兼容RTPS标准)、静态发现(可跳过SEDP阶段)、集中式的发现服务器架构以及手动RTPS发现。发现过程分为参与者发现(PDP)和端点发现(EDP)两个阶段,PDP通过多播/单播公告确认参与者存在,EDP则匹配主题和数据类型相同的端点。系统支持配置发现协议、租约期限等通用参数,以及各机制特有设置如静态EDP XML配置、服务器定位器等。此外还支持通过监听器实现发现回调功能。

Ray Home 722

IplImage与CImage 图像类型的转换

IplImage* plmg;      //定义两个IplImage和CImage类型     CImage cimg;     plmg=cvLoadImage(pDoc->m_paName,1);  //然后以路径为参数,把图形读进IplImage     cimg.CopyOf(plmg);                   //把IplImage转换成CImage类型

浴血重生-学习空间 5863

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

MFC中打开任意图像并在picture control控件中显示Mat对象

最近在使用OpenCV制作车牌识别系统,我选择了使用MFC制作界面。       界面设想是点击“打开图片”去选择任意文件夹(英文名)中的图片,然后将图片显示在picture control控件中。难点就是将Mat类型的图片显示在图形控件中。为“打开图像”这一button按钮添加单击事件:Mat src; char path1[100] ; CString filter;

带翅膀的猫的博客 8507

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: 学习OpenCV(四)
下一篇: VS2012中CSting , std::string , char * 之间的转换
知行且执行
博客等级 码龄14年 38粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值