日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/4/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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在文档窗口中显示图像(支持多图片格式)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。