VS2017配置opencv3.2在MFC单文档中显示图片

最近微软发布了VS2017,增加了很多更实用的功能,其中让笔者兴奋不已的GPU加速功能。只需要切换一个按键便能享受GPU的加速,让程序的速度几何倍数的加快。

可是vs2017比较刚刚发布很多的第三方库和第三方的工具都没有更新过来。其中包括笔者在标题上提到的Opencv3.2以及笔者以前一直使用的C++第三方GUI库QT。可是笔者着实不想放弃这令人着迷的VS2017。于是千方百计,到处翻资料终于在MFC单文档下显示出了opencv的图片。

一,首先要配置好opencv

因为opencv官网中编译的.dll文件并不支持VS2017。所以我们自己要编译opencv的dll文件。这方面网络上有很多资料,主要的过程是在CMake的软件下用vs2017的编译工具编译opencv的源文件再生成其特定的dll文件便可以直接在VS2017下直接使用opencv了。

二,在MFC单文档下先显示图片

VC++的单文档可以直接显示VC++库里面的CImgae类,首先我们在***View.h中添加一个变量CImage image;这里笔者在private下创建的该变量。然后我们在资源文件中添加一个事件处理将它创建在**View.cpp文件中,函数名任意取。

void CMFCApplication1View::OnOpenImage()
{
	// TODO: 在此添加命令处理程序代码
	CFileDialog dlg(TRUE/*, _T(".bmp"), _T("*.bmp"), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("位图文件(*.bmp)|*.bmp | JEPG文件(*.jpg) | *.jpg || ")*/);
	if (dlg.DoModal() == IDOK)
	{
		if (!image.IsNull())
		{
			image.Destroy();
		}
		image.Load(dlg.GetPathName());
		//CString cstr = dlg.GetPathName();
		str = CStringA(dlg.GetPathName());
		pic = imread(str, CV_LOAD_IMAGE_COLOR);
		Invalidate();
	}
}

上面便是该函数的全部实现,然后修改OnDraw()函数,如下:

void CMFCApplication1View::OnDraw(CDC* pDC)
{
	CMFCApplication1Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if (!pDoc)
		return;

	// TODO: 在此处为本机数据添加绘制代码
	if (!image.IsNull())
	{
		image.Draw(pDC->GetSafeHdc(), 0, 0);
	}
}


修改完成后便可以运行程序点击按钮便可以显示出图片。

三,实现Mat

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值