免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
OpenCV+MFC顯示圖像/視頻

OpenCV中文網(wǎng)站上有講怎么使用OpenCV讀入和顯示圖像和視頻

圖像文件讀入和顯示:http://www.opencv.org.cn/index.php/%E5%9B%BE%E5%83%8F%E6%96%87%E4%BB%B6%E8%AF%BB%E5%85%A5%E5%92%8C%E6%98%BE%E7%A4%BA

讀取視頻文件:http://www.opencv.org.cn/index.php/%E8%AF%BB%E8%A7%86%E9%A2%91%E6%96%87%E4%BB%B6%E5%92%8C%E8%BF%90%E5%8A%A8%E7%89%A9%E4%BD%93%E6%A3%80%E6%B5%8B

但它的顯示是使用的OpenCV庫里面的簡單的GUI,用來測試驗(yàn)證可以,如果要做成可視化工程,還是得借助專門的GUI開發(fā)工具了。本文簡述使用MFC顯示圖像和視頻。

1.讀取并顯示圖像

顯示圖像或視頻使用VC中的Picture控件,用到VC圖形設(shè)備接口的設(shè)備上下文(CDC類)。比如打開顯示這樣一個(gè)圖片lean.jpg

先進(jìn)行一些初始化工作,代碼如下:

 1 // DemoDlg.h 2 #include <highgui.h> 3  4 //在CDemoDlg類定義中加入如下幾行 5 private:        6     CRect rect; 7     CStatic* pStc; //標(biāo)識(shí)圖像顯示的Picture控件 8     CDC* pDC; //視頻顯示控件設(shè)備上下文 9     HDC hDC; //視頻顯示控件設(shè)備句柄10     CvCapture* capture; //視頻獲取結(jié)構(gòu)11 12 //DemoDlg.cpp13 #include <cv.h>14 #include <highgui.h>15 #include <cvaux.h>16 #include <ml.h>17 18 //在CDemoDlg構(gòu)造函數(shù)內(nèi)添加以下幾行,指針初始化19     pStc=NULL;20     pDC=NULL;21     capture=NULL;22 23 //在CDemoDlg類的OnInitDialog()中添加如下幾行,進(jìn)行初始化24 BOOL CFaceDlg::OnInitDialog()25 {26     //框架生成代碼.......27 28     pStc=(CStatic *)GetDlgItem(IDC_VIEW);//IDC_VIEW為Picture控件ID29     pStc->GetClientRect(&rect);//將CWind類客戶區(qū)的坐標(biāo)點(diǎn)傳給矩形30     pDC=pStc->GetDC(); //得到Picture控件設(shè)備上下文31     hDC=pDC->GetSafeHdc(); //得到控件設(shè)備上下文的句柄 32 33     return   TRUE;34 }

如上就將Picture控件的設(shè)備上下文句柄與圖片/視頻顯示的矩形區(qū)域聯(lián)系起來。

下面顯示圖片,在對(duì)話框上添加一個(gè)打開按鈕,點(diǎn)擊該按鈕觸發(fā)讀取顯示圖像的事件,事件響應(yīng)如下:

1 void CDemoDlg::OnOpen() 2 {3     IplImage * img=cvLoadImage("lena.jpg");//load image from file4     CvvImage cvvImg; //CvvImage類
5 cvvImg.CopyOf(img);//復(fù)制圖像到當(dāng)前的CvvImage對(duì)象中 6 cvvImg.DrawToHDC(hDC,&rect); //繪制圖像的ROI區(qū)域到DC的rect7 }

2.讀取并顯示視頻

因?yàn)橐曨l時(shí)一幀一幀的圖像,因此顯示視頻可以理解為間斷地讀取并顯示不同幀的圖像。這里有一個(gè)要點(diǎn),為了合理利用資源,盡量不要使用一個(gè)死循環(huán)一直讀取視頻中的幀數(shù)據(jù),應(yīng)該根據(jù)視頻的幀率設(shè)置合適的時(shí)鐘,定時(shí)地對(duì)視頻中的幀圖像進(jìn)行讀取顯示。因?yàn)閹释ǔ:艿?,所以顯示的每一幀圖像看起來就會(huì)使連續(xù)的。

對(duì)于視頻(視頻文件/攝像頭)的操作,OpenCV中文網(wǎng)站的參考手冊上給你詳細(xì)的用法,詳見http://www.opencv.org.cn/index.php/HighGUI%E8%A7%86%E9%A2%91%E8%AF%BB%E5%86%99%E5%87%BD%E6%95%B0

這里給出視頻文件的讀取與現(xiàn)實(shí)(因?yàn)闆]攝像頭,攝像頭的還沒有測試)。

初始化工作同上面的圖像讀取顯示一樣,所不同的是CDemoDlg::OnOpen()事件響應(yīng)函數(shù)中的代碼有區(qū)別,如下

 1 void CDemoDlg::OnOpen() 2 { 3     if (!capture) 4     {         5         capture=cvCaptureFromAVI("D://OtherUse//11.avi"); //初始化一個(gè)視頻文件捕捉器 6     } 7     if(!capture) 8     { 9         AfxMessageBox("無法獲得攝像頭");
return;10 }11 SetTimer(1,25,NULL); //定時(shí)器,定時(shí)時(shí)間和幀率一致12 }

然后設(shè)置時(shí)間響應(yīng),定時(shí)到達(dá)后,處理OnTimer(UINT nIDEvent)事件,視頻顯示在這里面完成。

 1 void CDemoDlg::OnTimer(UINT nIDEvent)  2 { 3     // TODO: Add your message handler code here and/or call default 4     if(1==nIDEvent) 5     { 6         IplImage* img=0;   7         img=cvQueryFrame(capture); //從攝像頭或者文件中抓取并返回一幀 8         //cvGrabFrame( capture ); //從攝像頭或者視頻文件中抓取幀 9         //img=cvRetrieveFrame(capture); //取回由函數(shù)cvGrabFrame抓取的圖像10         CvvImage m_CvvImage;  11         m_CvvImage.CopyOf(img,1); //復(fù)制該幀圖像    12         m_CvvImage.DrawToHDC(hDC, &rect); //顯示到設(shè)備的矩形框內(nèi)13     }14     CDialog::OnTimer(nIDEvent);
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
opencv2.3.1中使用CvvImage
利用opencv類庫在MFC顯示攝像頭視頻并且保存攝像頭視頻
如何利用OpenCV抓取映美精相機(jī)的實(shí)時(shí)圖像并且顯示在MFC的控件中
(74條消息) MFC使用 CImage貼圖失真
MFC:CImage顯示OpenCV:Mat矩陣圖像
在OpenCV2.2中使用CvvImage類
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服