欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

MFC使用OpenCV在文档窗口中显示图像(支持多图片格式)

发布时间:2024/4/15 48 豆豆
生活随笔 收集整理的这篇文章主要介绍了 MFC使用OpenCV在文档窗口中显示图像(支持多图片格式) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

MFC使用OpenCV在文档窗口中显示图像

    【尊重原创,转载请注明出处】http://blog.csdn.net/guyuealian/article/details/72550659

    在VS2010中新建一个 MFC单文档或多文档的应用程序,结合OpenCV强大的图像处理工具,我们可以在MFC的“File/open”直接打开并显示图像,具体方法如下:

(1)首先新建一个单文档或多文档的应用程序,项目名:Demo1
(2)在“Demo1Doc.h ”头文件中包含“#include <opencv2/opencv.hpp>”并声明Mat变量img

(3)在“Demo1Doc.cpp ”实现文件中OnOpenDocument方法中添加读取图片的代码(PS:默认新建MFC程序是没有OnOpenDocument,你可以鼠标右键,选择“类向导”,并搜索添加OnOpenDocument函数即可


    其中TRACE用来在Output窗口打印一些信息,这个在调试时才能看到,为了验证图片解码是否正常,我们把输入图片的长宽打印了出来。

    以上两步都是OpenCV主要的代码,要想在MFC中显示Mat矩阵的图像,还需要结合GDI+库,关于GDI+库的使用方法,可以参考网上的资料:http://www.cnblogs.com/pzxbc/archive/2011/11/17/2252490.html

(4)在“Demo1.h ”头文件中包含“#include <gdiplus.h>”和定义GdiplusStartupInput 和ULONG_PTR 属性变量


(5)Demo1.cpp ”实现文件中:

InitInstance 方法中调用:GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);//初始化GDI+库

ExitInstance方法中调用:GdiplusShutdown(gdiplusToken);//关闭GDI+


(6)最后在Demo1View.cppOnDraw方法中添加显示代码

void CDemo1View::OnDraw(CDC* pDC) {CDemo1Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);if (!pDoc)return;// TODO: 在此处为本机数据添加绘制代码cv::Mat newImage; if (pDoc->img.channels() == 1) { cv::cvtColor(pDoc->img, newImage, CV_GRAY2BGRA); } else if (pDoc->img.channels() == 3) { cv::cvtColor(pDoc->img, newImage, CV_BGR2BGRA); } else { newImage = pDoc->img; } Gdiplus::Bitmap bitmap(newImage.cols, newImage.rows, newImage.step1(), PixelFormat32bppARGB, newImage.data); //Gdiplus::Bitmap bitmap(pDoc->img.cols, pDoc->img.rows, pDoc->img.step, //每一行的字节数 // PixelFormat24bppRGB, pDoc->img.data); Gdiplus::Graphics graphics(pDC->GetSafeHdc()); graphics.DrawImage(&bitmap, 0, 0); }
(7)设置支持打开的图片格式(如*.jpg;*.bmp)

在“资源视图”中,选择String Table,找到“IDR_Demo1TYPE”,并修改为: \nDemo1\nDemo1\nDemo1 Files (*.jpg;*.bmp)\n.jpg;.bmp\nDemo1.Document\nDemo1.Document


(8)编译通过后运行,在MFC中点击“文件”→“打开”→选择一个*.bmp或者*.jpg的图片就可以正常显示了。



关于GDI+库的使用方法,可参考网上的资料:

【1】《GDI GDI+从入门到精通》:https://chuanke.baidu.com/v1265063-140266-433487.html

【2】《GDI+开发教程》:https://wenku.baidu.com/view/fc83d137f111f18583d05a3e.html

【3】《GDI+ 使用指南》 http://www.cnblogs.com/pzxbc/archive/2011/11/17/2252490.html

总结

以上是生活随笔为你收集整理的MFC使用OpenCV在文档窗口中显示图像(支持多图片格式)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。