您的位置:首页 > 运维架构

OpenCV窗口嵌入MFC

2016-12-01 15:41 537 查看

OpenCV窗口嵌入MFC

from http://blog.csdn.net/pengjc2001/article/details/52073868

在初始化函数中加入如下代码。

std::string wndName = "tt";
cv::namedWindow(wndName, cv::WINDOW_AUTOSIZE);
HWND mHWnd = (HWND)cvGetWindowHandle(wndName.c_str());
HWND mHParent = ::GetParent(mHWnd);
::SetParent(mHWnd, GetDlgItem(IDC_IMG)->m_hWnd);
::ShowWindow(mHParent, SW_HIDE);


下面就是在需要的地方 调用DrawMatToPic(Mat cvImg, UINT ID) ;这个ID与上边的ID应该一致

调用语句:

cv::Mat img = cv::imread("D:\\desktop_tempfile\\images\\IMG_20161027_091156.jpg");
DrawMatToPic(img, IDC_IMG);


void CMy20161201TestOpenCVDlg::DrawMatToPic(cv::Mat cvImg, UINT ID)
{

CDC *pDC = GetDlgItem(ID)->GetDC();
HDC hDCDst = pDC->GetSafeHdc();
CRect rect;
GetDlgItem(ID)->GetClientRect(&rect);

int NewWidth = cvImg.cols;
int NewHeight = cvImg.rows;
double XScale = double(rect.right - rect.left) / double(cvImg.cols);
double YScale = double(rect.bottom - rect.top) / double(cvImg.rows);
NewWidth = cvImg.cols * XScale;
NewHeight = cvImg.rows * YScale;

cv::Size NewSize(NewWidth, NewHeight);
cv::Mat cvImgScaled(NewSize, CV_8UC3);
cv::resize(cvImg, cvImgScaled, NewSize);
cv::imshow("tt", cvImgScaled);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: