1. 程式人生 > >MFC編個對話方塊,能夠實時顯示攝像頭捕捉的鏡頭

MFC編個對話方塊,能夠實時顯示攝像頭捕捉的鏡頭

現在在vc上採集視訊常用的方法有三:vfw,directshow,opencv

你是要進行影象處理的話推薦opencv(具體參考:於仕琪,opencv教程基礎篇中的例3-6,稍作修改,估計就能用於你的工程)

下面貼出我自己編的一個小工程:如有疑問,E-mail:[email protected]
進行opencv的預備操作你要看那本書和逛opencv中文網

如有問題可以和我討論(我也是菜鳥,剛為解決了這個問題竊喜不已)。
1.新建mfc對話方塊工程,在其中新增一個picture控制元件,除了ID以外什麼都不用改

2.在對話方塊標頭檔案(沒有Dlg那個)中新增(最好是在“#include "resource.h" // main symbols之後”):
#include "cxcore.h"
#include "cvcam.h"
#include "windows.h"
#include "cv.h"
#include "highgui.h"
3.在工程-》設定-》選擇所有配置-》link(連線)-》物件/庫模組-》中新增:
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cxcore.lib cv.lib ml.lib cvaux.lib highgui.lib cvcam.lib

4.在需要觸發攝像頭顯示的地方新增:
void CVideomfcDlg::OnButton1()
{
// TODO: Add your control notification handler code here

int ncams = cvcamGetCamerasCount( );//返回可以訪問的攝像頭數目
HWND MyWin=::GetDlgItem(m_hWnd,IDC_VIDEO); //獲得控制元件控制代碼(IDC_VIDEO就是圖片控制元件)
cvcamSetProperty(0, CVCAM_PROP_ENABLE, CVCAMTRUE); //選擇第一個攝像頭
int width=240;
int height=240;

cvcamSetProperty(0,CVCAM_PROP_WINDOW, &MyWin); // Selects a window for
cvcamSetProperty(0,CVCAM_RNDWIDTH, &width);
cvcamSetProperty(0,CVCAM_RNDHEIGHT, &height);
cvcamSetProperty(0, CVCAM_PROP_CALLBACK, callback1);
//回撥函式將處理每一幀

cvcamInit( );
cvcamStart( );

}
5.改變顯示的影象序列大小,在視窗屬性設定了以後,新增如下程式碼:
int width=320; //這個就是需要顯示的視窗大小
int height=240; //根據自己需要選擇
cvcamSetProperty(0,CVCAM_RNDWIDTH, &width);
cvcamSetProperty(0,CVCAM_RNDHEIGHT, &height);

6.在對話方塊類中新增callback成員函式(注意,在新增函式的時候,一定要選擇static,不選的話你就自己鬱悶去吧,反正我是為了這個鬱悶了2個禮拜)
void CVideomfcDlg::callback1(IplImage *image)
{

IplImage* image1 = image;
int i,j;

assert (image);
//獲取當前系統時間
SYSTEMTIME st2=;
GetLocalTime(&st2);
char sss[18]=; //這個是用來儲存所要儲存的圖片名的,用的是一個笨辦法,先定義,再修改其中的陣列值。

sss[7]=st2.wHour/10+48; //獲取系統當前小時
sss[8]=st2.wHour%10+48;

sss[9]=st2.wMinute/10+48; //獲取系統當前分鐘
sss[10]=st2.wMinute%10+48;

sss[11]=st2.wSecond/10+48; //獲取系統當前秒
sss[12]=st2.wSecond%10+48;



cvSaveImage(sss,image1); //使用系統當前時間為名稱(XXXXXX.jpg)儲存圖片
}
ps:你還需要在c盤根目錄下建立一個叫1的資料夾儲存圖片。
祝你成功

相關推薦

MFC對話方塊能夠實時顯示攝像頭捕捉鏡頭 點選確定儲存當前影象。

現在在vc上採集視訊常用的方法有三:vfw,directshow,opencv  你是要進行影象處理的話推薦opencv(具體參考:於仕琪,opencv教程基礎篇中的例3-6,稍作修改,估計就能用於你的工程)  下面貼出我自己編的一個小工程:如有疑問,E-mail:[email protected

MFC對話方塊能夠實時顯示攝像頭捕捉鏡頭

現在在vc上採集視訊常用的方法有三:vfw,directshow,opencv 你是要進行影象處理的話推薦opencv(具體參考:於仕琪,opencv教程基礎篇中的例3-6,稍作修改,估計就能用於你的工程) 下面貼出我自己編的一個小工程:如有疑問,E-mail:[email protected]

MFC開啟檔案對話方塊選擇多檔案

    size_t index;     CString cstrsucstring;     CFileDialog filedlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT |OFN_ALLOWMUL

Qt 關於彈出對話方塊實現居中顯示

本人實現的是 QFrame 居中! 因為要實現QFrame 彈出居中顯示。。 在QFrame->show之前實現move,但是這樣是取不到QFrame真實的大小! 在QFrame->show之後實現move,這時move就會出現閃屏的現象發生。 用resi

MFC如何拷貝資源(對話方塊工具欄等)

 MFC的資源機制是兩個檔案的配合,xxx.rc(xxx為專案名稱)檔案和resource.h檔案的配合,res.rc以指令碼的形式描述了資源的形式,如***對話方塊大小,ID,有什麼按鈕,按鈕的ID等等 如“關於”對話方塊在rc檔案內的描述(怎麼開啟,找到rc檔案,資源管

MFC軟體歡迎介面(基於對話方塊VS2013)

Step1:首先你需要一張BMP格式的圖片,這個工作可以在Photoshop中完成。Step2:然後我們新建一個mfc工程檔案(基於對話方塊的)Step3:進入類嚮導新增類,你也可以自己命名Step4:插入BMP圖片Step5:mySplash類標頭檔案程式碼編輯mySpla

MFC 下檔案對話方塊選擇多檔案

在檔案對話方塊下,選擇多個檔案,並且得到檔名,程式碼如下: CFileDialog   Dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT|OFN_ALLO

MFC中兩對話方塊之間資料傳遞

這裡有兩種情況, 第一種情況是: (在一個基於單文件的應用程式中,新建了兩個對話方塊A和B,並且用兩個獨立的類和他們關聯) 對話方塊A中有一個編輯框, 按下A中的一個按鈕a後彈出對話方塊B, B中也有一個編輯框b, 在B中輸入資料 點選確定(ID0K)後 ,b中的資料能

MFC建立銷燬開啟模式對話方塊關閉模式對話方塊等函式呼叫順序

MFC應用程式建立視窗的過程1.PreCreateWindow()   該函式是一個過載函式,在視窗被建立前,可以在該過載函式中改變建立引數        (可以設定視窗風格等等)2.PreSubclassWindow() 這也是一個過載函式,允許首先子分類一個視窗3.OnG

JavaScript操作BOM物件 - document物件; history 和 location物件 對話方塊Date時間物件

getElementById返回擁有指定id的第一個物件(注意只是一個且是第一個)getElementsByName返回帶有指定名稱的物件集合getElementsBytagNam返回指定標籤的物件集合例html程式碼<div class="content" > <div cl

SQL Sever無法開啟連結對話方塊未將物件引用設定到物件的例項。(AppIDPackage)

SQL Sever無法開啟連結對話方塊,未將物件引用設定到物件的例項。(AppIDPackage) 一般會出現這問題的原因是:安裝了VS。 一:C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\找到machine.config,把它刪除

phpstorm IDEA 雙擊Shift鍵會彈出 SearchEverywhere 對話方塊如何取消這個功能

解決方法:一:Open lib/resources.jar/idea/PlatformActions.xml and remove or comment such line:   <action id="SearchEverywhere" class="com.intel

MFC模態對話方塊和非模態對話方塊

下面是一個我的手寫的模態對話方塊和非模態對話方塊圖: 模態對話方塊是指當其顯示時,程式會暫停執行,直到關閉這個模態對話方塊後,才能繼續執行程式中其他任務。非模態對話方塊是指當其顯示時,允許轉而執行程式中其他任務,而不用關閉這個對話方塊。      模態對話方塊的建立:

純JS實現Toas對話方塊無HTML結構

<!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>toast</tit

模態與非模態對話方塊對話方塊之間值的傳遞

①、模態對話方塊的建立:CDialog::DoModal       不用釋放資源 ②、非模態對話方塊的建立:CDialog::Create     >:  MyDialog dlg;

Qt 新增一個QFrame的對話方塊設定按鈕的樣式表

新增一個QFrame的對話方塊 設定按鈕的樣式表 QPushButton#pdf2file { border:0px; background-image:url(:/images/btn-menu-02.png); font:16px "微軟雅黑"; colo

MFC】基於對話方塊的視窗置底

環境:win10,vs2017 之前發過一篇視窗置底的文章,最近找到了一種新的方法,感覺效果更好一點。 思路就是,將自己程式的父視窗設為桌面,程式就會嵌入到桌面內部,便可實現置頂。 程式碼如下 將置底部分新增到OnInitDialog函式裡面: BOOL CDesktopEv

MFC】基於對話方塊程式選單欄不更新

環境:win10,vs2017 問題描述: 為mfc對話方塊程式添加了一個托盤選單,但這個托盤選單不響應ON_UPDATE_COMMAND_UI訊息, 並且設定選單項的勾選(SetCheck)時,可以通過程式碼觀察到勾選成功,但選單欄顯示的勾選狀態依然不變。 經過幾天的百度,終於發現

MFC——模態對話方塊和非模態對話方塊

一、模態對話方塊 如果你需要做一個模態對話方塊,簡單的說就是你點一個按鈕,彈出一個對話方塊,之後你只能在彈出的對話方塊上操作的這麼一個過程。實驗的過程很簡單,跟著我做吧。 下面開始模態對話方塊實驗 在資源檢視新建一個對話方塊資源,修改其ID為IDD_DIAL

(shell練習1)zenity圖形介面之資訊對話方塊和單複選對話方塊以及whilefor迴圈的練習

涵蓋內容包括 1,shell的while迴圈 2,shell的for迴圈 3,shell關於字串的擷取(精華之處) 4,shell的選擇分支語句if 5,zenity資訊對話方塊 6,zenity單選對話方塊 7,zenity複選對話方塊  8,shell不