6行代码将图片显示到MFC图像控件上

本文在博主知乎的地址:https://zhuanlan.zhihu.com/p/24156588

最近在做一个实验,需要将图像cv::Mat显示到MFC上,这个操作有点难度,百度还有google的解决办法都不是很满意,意外在一个开源软件(背景减除算法库BGSLibrary-A Background Subtraction Library )里面看到了相关操作,现分享出来,实现效果见图:

6行代码将图片显示到MFC图像控件上_第1张图片

//初始化部分,主要功能好像就是把cv的窗口和MFC的窗口联系起来,具体不太懂,有谁知道的,可以解答下哈

cv::namedWindow("Display", 1);//命名一个窗口"Display"

HWND hWnd = (HWND)cvGetWindowHandle("Display");//获得这个窗口的句柄

HWND hParent = ::GetParent(hWnd);//貌似得到这个窗口的父句柄

::SetParent(hWnd, GetDlgItem(IDC_STATIC_ImgDisplay)->m_hWnd);//貌似给MFC图片控件设置和cv窗口"Display"一样的父句柄

::ShowWindow(hParent, SW_HIDE);//设置窗口的显示状态:隐藏窗口并激活其他窗口。不太懂

初始化算5行代码。

//显示部分

do

{

do something..//获取图片

cv::resize(,,)//更改图片尺寸以适应图片控件尺寸

cv::imshow("Display", cv::Mat x);//显示,直接通过cv函数显示到MFC上

cv::waitKey(20);

}while(bool x);

显示部分只能算1行有效代码,其他的代码只是为了演示,我没有骗人吧,嘎嘎,大家快来试一试。

你可能感兴趣的:(6行代码将图片显示到MFC图像控件上)