MFC中Mat实现打开关闭本地摄像头
生活随笔
收集整理的這篇文章主要介紹了
MFC中Mat实现打开关闭本地摄像头
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
靜態(tài)文本的ID: IDC_STATIC_IMG
按鈕的ID: IDC_BUTTON_openCAMARE IDC_BUTTON_CloseCamera
下面直接在(// QueryCaptureDlg.cpp : 實現(xiàn)文件) 中貼代碼
// QueryCaptureDlg.cpp : 實現(xiàn)文件 //#include "stdafx.h" #include "QueryCapture.h" #include "QueryCaptureDlg.h" #include "afxdialogex.h"//該程序用到的頭文件 #include <opencv.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> using namespace cv; using namespace std;#ifdef _DEBUG #define new DEBUG_NEW #endif//該程序用到的變量 bool flag_camera = false; //相機是否打開 Mat newframe,frame;HWND viewhWnd = NULL; HWND hParent = NULL; void CQueryCaptureDlg::OnBnClickedButtonCamare() {// TODO: 在此添加控件通知處理程序代碼if(flag_camera ==false){flag_camera = true;VideoCapture capture(0);//捕獲外部攝像頭Mat frame;//建立兩個Mat,一個用來顯示視頻,另一個給全局里的AllframenamedWindow("view", WINDOW_AUTOSIZE);viewhWnd = (HWND)cvGetWindowHandle("view");hParent = ::GetParent(viewhWnd);::SetParent(viewhWnd, GetDlgItem(IDC_STATIC_IMG)->m_hWnd);::ShowWindow(hParent, SW_HIDE);//隱藏運行程序框,并且把它“畫”到MFC上if (capture.isOpened()){for (;;)//循環(huán)以達到視頻的效果{if(flag_camera) //如果相機一直開著,則不斷讀入圖片{capture >> frame;capture >> newframe;if (!frame.empty()){CRect rc;CWnd *pWnd = GetDlgItem(IDC_STATIC_IMG);//IDC_PIC_2D為控件IDpWnd->GetClientRect(&rc);//rc為控件的大小。int x=rc.Height();int y=rc.Width();resize(frame,frame,Size(y,x)); //改變圖片尺寸輸出在picture控件上imshow("view", frame);UpdateData(FALSE);}waitKey(10);}else break;}}}else{AfxMessageBox("相機已經打開");}}void CQueryCaptureDlg::OnBnClickedButtonClosecamera() {// TODO: 在此添加控件通知處理程序代碼if(flag_camera == false){AfxMessageBox("相機已經關閉");}else{flag_camera = false;destroyAllWindows(); ///【注】關閉所有的窗口,這句話必須加上} }運行結果圖:
總結
以上是生活随笔為你收集整理的MFC中Mat实现打开关闭本地摄像头的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第14章:日志管理
- 下一篇: MFC中Mat实现打开本地图片