【嵌牛導(dǎo)讀】:
? ? ?opencv界面開發(fā)常用的有mfc冲秽、QT、c#等镊靴。本文就是使用opencv讀取攝像頭铣卡,使用opencv處理視頻的第一步。轉(zhuǎn)載自本人博客偏竟。
【嵌牛正文】:
要開始做一個行人檢測的小項目煮落,首先讀取出攝像頭顯示,參考了這位博主的教程:http://blog.csdn.net/qq_32171677/article/details/61190719踊谋,可能是版本問題無法讀出攝像頭顯示在Picture Control控件中蝉仇,因此做了一些改進,改變了獲取攝像頭的方式殖蚕,步驟如下:
1轿衔、配置環(huán)境為VS2015+OpenCV3.3,按照以上博主的教程搭建圖形界面睦疫,最后程序正常執(zhí)行害驹,攝像頭旁邊的led燈也亮了,但是圖形控件中并沒有顯示出來攝像頭的圖像蛤育。
? ? 2宛官、新建一個Mat型變量和VideoCapture 變量
Mat g_srcImage;
VideoCapture Capture(0);
3葫松、修改打開攝像頭按鈕事件相應(yīng)函數(shù),將獲取攝像頭一幀數(shù)據(jù)的函數(shù)改為:Capture >> g_srcImage;再將Mat型的g_srcImage改為IplImage類型變量底洗,修改后的函數(shù)如下:
// TODO: 在此添加控件通知處理程序代碼 namedWindow("顯示攝像頭"); Capture >> g_srcImage; imshow("顯示攝像頭", g_srcImage); frame= &IplImage(g_srcImage); pDC = GetDlgItem(IDC_PIC_STATIC)->GetDC();//GetDlgItem(IDC_PIC_STATIC)意思為獲取顯示控件的句柄(句柄就是指針)腋么,獲取顯示控件的DC GetDlgItem(IDC_PIC_STATIC)->GetClientRect(&rect); hDC = pDC->GetSafeHdc();//獲取顯示控件的句柄 CvvImage m_CvvImage; m_CvvImage.CopyOf(frame, 1); //復(fù)制該幀圖像 m_CvvImage.DrawToHDC(hDC, &rect); //顯示到設(shè)備的矩形框內(nèi) ReleaseDC(pDC); SetTimer(1, 25, NULL); //定時器,定時時間和幀率一致
4亥揖、同時珊擂,將定時器函數(shù)做出同樣的更改:
// TODO: 在此添加消息處理程序代碼和/或調(diào)用默認(rèn)值a
Capture >> g_srcImage;
imshow("顯示攝像頭", g_srcImage);
pDC = GetDlgItem(IDC_PIC_STATIC)->GetDC();//GetDlgItem(IDC_PIC_STATIC)意思為獲取顯示控件的句柄(句柄就是指針),獲取顯示控件的DC?
GetDlgItem(IDC_PIC_STATIC)->GetClientRect(&rect);
hDC = pDC->GetSafeHdc();//獲取顯示控件的句柄?
frame = &IplImage(g_srcImage);
CvvImage m_CvvImage;
m_CvvImage.CopyOf(frame, 1); //復(fù)制該幀圖像? ?
m_CvvImage.DrawToHDC(hDC, &rect); //顯示到設(shè)備的矩形框內(nèi)?
CDialogEx::OnTimer(nIDEvent);
5徐块、關(guān)閉攝像頭只是簡單的關(guān)閉定時器
ReleaseDC(pDC);
KillTimer(1);
6未玻、下載工程連接:https://download.csdn.net/download/ai_lz/10284887
有問題請留言,轉(zhuǎn)載請聲明http://blog.csdn.net/ai_Lz/article/details/79545668胡控。