在初始化函数中加入如下代码
在mfc的图形控件嵌入opencv的图形窗口, 以便利用opencv进行画矩形,直线,圆,椭圆。MFC进行鼠标操作时无法显示到图像上,所以嵌入opencv窗口显示图像。
void Ctest2Dlg::OnBnClickedReadImg()
{
cv::namedWindow("view", cv::WINDOW_AUTOSIZE);
HWND hWnd = (HWND)cvGetWindowHandle("view");
HWND hParent = ::GetParent(hWnd);
::SetParent(hWnd, GetDlgItem(IDC_ShowImg)->m_hWnd);
::ShowWindow(hParent, SW_HIDE);
CString FilePath;
CFileDialog FileDlg(TRUE);
if (IDOK == FileDlg.DoModal())
{
//获取FileOpen对话框返回的路径名
FilePath = FileDlg.GetPathName();
CT2CA pszName(FilePath);
std::string pathName(pszName);
srcImg = imread(pathName);
imshow("view", srcImg);
m_pImageZoom = new CImageZoom(FromHandle(hWnd), FilePath);
// 除非将焦点设置到控件,否则返回 TRUE
}
}
用new CImageZoom函数访问view窗口的的窗口号,ImageZoom是关于鼠标滚动放大缩小的类。
参考链接:在mfc的图形控件嵌入opencv的图形窗口 - CSDN博客 https://blog.csdn.net/pengjc2001/article/details/52073868