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]

android6.0以下版本的手機拍照介面不能確定6.0以上的版本可以拍照

測試6.0以上的版本手機拍照無影響,使用6.0以下的手機在拍照介面不能點選確定/OK   已上是關於拍照的所有程式碼,選擇儲存路徑時候,使用高版本手機儲存路徑為 getExternalStoragePublicDirectory 低版本手機的儲

js+css控制彈出小視窗之後後整個頁面背景圖變色並且不可操作確定頁面跳轉

<html> <head> <title>彈出一個視窗後,後面的層不可操作 ,點選確定之後跳轉新的頁面</title> <script> function show() //顯示隱藏層和彈出層 {

自定義的tabbar在跳轉之後隱藏tabbar後tabbar原來的位置不能響應事件這樣解決

yourInnerViewController.hidesBottomBarWhenPushed = YES; [self.navigationController pushViewControlle

安卓彈出框確定取消的操作提示框的用法

new AlertDialog.Builder(this) .setTitle(R.string.device_sport_camera_record_success)//這裡是表頭的內

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

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

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模態對話方塊和非模態對話方塊

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

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

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

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

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

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

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

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

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

從一個MFC工程移植對話方塊類到另一個MFC工程

轉載於:https://blog.csdn.net/wowoandlyn/article/details/2937785         今天碰到模組移植問題了,自己做的對話方塊類(繼承於CDialo

VC/MFC如何設定對話方塊背景顏色

方法一:呼叫CWinApp類的成員函式SetDialogBkColor來實現。  (這個函式已經廢棄) 1 void SetDialogBkColor(COLORREF clrCtlBk = RGB(192, 192

VC MFC 對話方塊 Picture控制元件 顯示影象閃爍問題

在VC 使用StretchDIBits函式拉伸影象,然後顯示,使用 pWnd->Invalidate();  pWnd->UpdateWindow(); 重新整理視窗,發現當影象和背景相差很大的時候,有閃爍現象。 解決辦法: hdd=DrawDibOpen()

MFC學習之 對話方塊設定背景顏色及控制元件透明的方法

對話方塊設定背景色之後控制元件不透明的問題。 1.對話方塊設定背景色: 方法1:(用OnPaint()) 在Dlg.h中:宣告 afx_msg void OnPaint();                                HICON m_hIcon; 在Dl

MFC中修改對話方塊、編輯框、button按鈕背景色

一、修改對話方塊背景色: 1、為目標對話方塊新增WM_CTRCOLOR訊息; 2、位目標Dlg類定義一個CBrush型別的私有成員變數:m_brushBg,並在其建構函式中將此畫刷初始為 一個淡藍色畫刷(畫刷顏色可任意修改):m_brushBg.CreateSolidBru

MFC 動態建立對話方塊和控制元件

         一段時間以來,都在思考不採用Qt,用Win32-API或者MFC實現的程式使介面可配置。即先配置好需要什麼對話方塊、包含什麼控制元件、完成什麼任務,然後執行時建立,用以實現介面和功能的分離。需要可以動態配置控制元件建立、訊息接收函式。之前準備的本文