社区
C++ 语言
帖子详情
MFC框架下如何显示IplImage类型图像
lightyear307
2010-12-03 05:16:07
小弟初学MFC和opencv,通过opencv中的IplImage *pFrame = cvQueryFrame( pCapture )方法,不断地刷屏,形成视频流,我现在有一个规定好的MFC程序,要求我将这个视频流图像显示在一个叫做ID_STATIC_VERSION的控件窗口中,请问论坛里的大牛这个问题应该如何解决啊!谢谢了。
...全文
240
1
打赏
收藏
MFC框架下如何显示IplImage类型图像
小弟初学MFC和opencv,通过opencv中的IplImage *pFrame = cvQueryFrame( pCapture )方法,不断地刷屏,形成视频流,我现在有一个规定好的MFC程序,要求我将这个视频流图像显示在一个叫做ID_STATIC_VERSION的控件窗口中,请问论坛里的大牛这个问题应该如何解决啊!谢谢了。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fuyuming1986
2011-07-30
打赏
举报
回复
CvCapture *capture=cvCreateFileCapture("E:\\VIDEO_ST1_0_0_20110505164632109.avi");
IplImage *srcImage;
int i;
while(1){
srcImage=cvQueryFrame(capture);//取帧
}
CDC* pDC = this->GetDlgItem( IDC_PIC ) ->GetDC(); // 获得显示控件的 DC
HDC hDC = pDC ->GetSafeHdc(); // 获取 HDC(设备句柄) 来进行绘图操作
CRect rect;
m_picture.GetClientRect(&rect); //m_picture为Picture Control控件变量,获得控件的区域对象给图片空间加一个变量
CImage cimg;
cimg.CopyOf(srcImage); // 复制图片
cimg.DrawToHDC( hDC, &rect ); // 将图片绘制到显示控件的指定区域内
cimg.Destroy();
ReleaseDC( pDC );
VC2008_OpenCV2.3.1
图像
处理平台
【目的】 1、了解OpenCV在
MFC
框架
中的使用,建立基于VC + OpenCV的
图像
处理平台; 2、在此基础上实现简单的
图像
处理操作,包括
图像
的打开、
显示
、放大、缩小、保存。 【版本】 VC2008 + opencv 2.3.1 【详细实现步骤】 1、VC2008编译环境设置:工程中已预先设好,为保证能编译成功,自己需重新设置(include/lib/bin路径,略。。。); 2、视图
显示
选择OpenCV老式
显示
方法Cvv
Image
,将Cvv
Image
文件夹下两个文件加入工程中,stdafx.h中加入【#include "Cvv
Image
/Cvv
Image
.h"】 3、C
MFC
_OpenCVDoc文档类中加入变量: Mat m_origin
Image
;//原始
图像
Mat m_
Image
;//中间处理
图像
4、重载虚函数OnOpenDocument函数,代码如下: BOOL C
MFC
_OpenCVDoc::OnOpenDocument(LPCTSTR lpszPathName) { if (!CDocument::OnOpenDocument(lpszPathName)) return FALSE; //使用Mat矩阵读取
图像
数据 m_origin
Image
= imread((char*)lpszPathName); //原始数据留存,数据操作在m_
Image
上进行 m_origin
Image
.copyTo(m_
Image
); return TRUE; } 5、重载虚函数OnSaveDocument,代码如下: BOOL C
MFC
_OpenCVDoc::OnSaveDocument(LPCTSTR lpszPathName) { if (!m_
Image
.empty()) { imwrite((char*)lpszPathName, m_
Image
); } return TRUE; } 6、视图类C
MFC
_OpenCVView中加入变量: C
Image
m_show
Image
;//
图像
显示
变量 7、视图类C
MFC
_OpenCVView中OnDraw函数改写如下: void C
MFC
_OpenCVView::OnDraw(CDC* pDC) { C
MFC
_OpenCVDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; if (pDoc->m_
Image
.empty()) { return; } //获取需要
显示
的
图像
Ipl
Image
* piI = &(pDoc->m_
Image
.operator
Ipl
Image
()); //转化为合适
显示
的
类型
m_show
Image
.CopyOf( piI ); //获取
显示
设备窗口 CRect rect; GetClientRect(▭); //把
显示
区的宽度设为
图像
的真实宽度和高度 rect.right=m_show
Image
.Width(); //Cvv
Image
:Width()计算
图像
的宽度,单位像素 rect.bottom=m_show
Image
.Height();//Cvv
Image
:Height()计算
图像
的高度,单位像素 //定义一个CSize对象,用于保存滚动条的尺寸,设为
图像
的真实尺寸 CSize sizeTotal(rect.right,rect.bottom); SetScrollSizes(MM_TEXT, sizeTotal);//设置滚动条的位置 //调用Cvv
Image
类的成员函数DrawToHDC在视图窗口
显示
图像
//函数形参为当前的设备环境和
显示
区大小 m_show
Image
.DrawToHDC(pDC->GetSafeHdc(),rect); } 8、滚动条
显示
设置: 视图类C
MFC
_OpenCVView需继承于CScrollView类,而不是CView类,需要改动的地方还有,将以下语句 IMPLEMENT_DYNCREATE(C
MFC
_OpenCVView, CView) BEGIN_MESSAGE_MAP(C
MFC
_OpenCVView, CView) 改为: IMPLEMENT_DYNCREATE(C
MFC
_OpenCVView, CScrollView) BEGIN_MESSAGE_MAP(C
MFC
_OpenCVView, CScrollView); 另外,初始化时重载OnInitialUpdate函数如下: void C
MFC
_OpenCVView::OnInitialUpdate() { CScrollView::OnInitialUpdate(); // TODO: 在此添加专用代码和/或调用基类 CSize sizeTotal; sizeTotal.cx = sizeTotal.cy = 60; SetScrollSizes(MM_TEXT, sizeTotal); }
OpenCV在
MFC
框架
下
显示
图片问题
在当前OpenCV2版本内,
图像
格式为cv::Mat ,而该格式无法直接在
MFC
内
显示
。因此,需要将其转换为可以在
MFC
内
显示
的Cvv
Image
类格式,该类内有函数 DrawToHDC()支持
MFC
。 在做数字
图像
处理大作业时,碰到了
MFC
框架
下图片
显示
的问题,在早期的opencv版本中,可以使用Cvv
Image
类解决图片
显示
问题,但较新版本的opencv已废弃了此类,因此需要我们在项目中手动添加。
手把手教你用
MFC
和OpenCV,制作
mfc
读取并
显示
图像
(两种方式)
mfc
opencv读取并
显示
图像
MFC
显示
Mat图片---Opencv(二)
Opencv在1.0时代,在
MFC
框架
上
显示
图片可以通过Cvv
image
类里的DrawPicToHDC(
Ipl
Image
*img, UINT ID)方法方便的
显示
出来,当然当时使用的还是IpI
Image
图片格式,到了Opencv2.0,不知道基于什么考虑,Cvv
image
类被舍弃了,也行是OpenCV小组各位大神觉得
MFC
命不久矣?……不得而知。 这就导致在
MFC
上
显示
图片的这个小小的需求变...
vs2008
MFC
程序 读取
显示
图像
、更改背景
图像
源自:http://blog.csdn.net/yousheng324/article/details/6785479 一、创建
MFC
首先创建一个
MFC
对话框应用程序(Dialog-based Application)如下: 在VS2005和2008里,我们可以用一个 Solution 来组合几
C++ 语言
64,646
社区成员
250,479
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章