OpenCV窗口绑定到MFC中用以显示视频或图片数据

本文介绍如何在MFC应用程序中直接使用OpenCV显示图片,避免使用CvvImage类,实现窗口绑定并利用OpenCV的鼠标点击事件,提供详细步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当使用MFC和OpenCV显示图片数据时,很多采用将Mat类型的图片数据转成CvvImage类型,然后在MFC的窗口中进行显示,但是将面临需要额外的头文件CvvImage的问题。而将OpenCV的窗口与MFC中的图片显示控件进行绑定后就不需要CvvImage这个类了,同时有一个额外的好处是可以使用OpenCV的鼠标点击事件了,具体流程如下:

首先在对话框头文件中加入

CRect rect1;

然后在对话框的OnInitDialog()函数下加入:

//绑定窗口
	CWnd  *pWnd1 = GetDlgItem(IDC_STATIC);//CWnd是MFC窗口类的基类,提供了微软基础类库中所有窗口类的基本功能。
	pWnd1->GetClientRect(&rect1);//GetClientRect为获得控件相自身的坐标大小
	namedWindow("src1", WINDOW_AUTOSIZE);//设置窗口名
	HWND hWndl = (HWND)cvGetWindowHandle("src1");//hWnd 表示窗口句柄,获取窗口句柄
	HWND hParent1 = ::GetParent(hWndl);//GetParent函数一个指定子窗口的父窗口句柄
	::SetParent(hWndl, GetDlgItem(IDC_STATIC)->m_hWnd);
	::ShowWindow(hParent1, SW_HIDE);//ShowWindow指定窗口中显示

其中IDC_STATIC是MFC中图片控件的ID。

之后就可以随心所欲的使用imshow()函数了,但是窗口名称需要与之前设置的窗口名称一致,本文需要使用imshow("src1",img);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值