『壹』 使用MFC獲取USB攝像頭圖像保存並在單窗口指定位置顯示
openCV採集攝像圖片並保存
我用代碼
#include "cv.h"
#include "highgui.h"
void main()
{
CvCapture* capture;
capture=cvCreateCameraCapture(0);
assert(capture!=NULL);
IplImage* frame;
cvNamedWindow("camera",1);
while(1)
{
frame=cvQueryFrame(capture);
if(!frame)
break;
cvShowImage("camera",frame);
if(cvWaitKey(33)>=0)
break;
}
cvReleaseImage(&frame);
cvDestroyWindow("camera");
}
連接攝像獲取數據保存作圖片呢(jpg)
一個界面顯示攝像頭採集的視頻就可以了?用MFC拖一個PICTURE控制項上去,另外再加幾句代碼就行。。我這邊有個,但是不知道仍哪裡了。。。就幾個函數。
『貳』 MFC 開啟遠程攝像頭怎麼把看到的內容傳回本地
要通過網路協議 或者是攝像頭廠家的SDK(廠家封裝的網路協議)
『叄』 mfc capDriverConnect函數連接攝像頭進行拍照,但是調用此函數總提示連接視頻源對話框
連接非返回bool類型-1 0表示成功了
『肆』 如何用DirectShow在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)存儲圖片
}
還需要在c盤根目錄下建立一個叫1的文件夾保存圖片。
『伍』 如何用mfc調用電腦上攝像頭並顯示在屏幕上
vc++就能做 ,一步一步根本說不清楚,首先你要完成 攝像頭顯示這個功能,然後就是數學方面的人臉識別的方法了,(其中包括人臉的矯正,和一些復雜區域的保留。)我曾經做過,不過代碼讓我給整丟了,當時我做了4天的時間,做程序記得要一步一步來 一個功能一個功能實現,完了再將功能拼接在一起,這才是面向對象的編程思想。
『陸』 MFC控制外設 舉個例子:怎麼通過MFC怎麼控制攝像頭,是不是和鍵盤一樣有消息相應函數啊或者有自己類封裝
mfc沒有封裝視頻捕獲的api函數,可以通過調用相應函數來實現。
參考
http://blog.csdn.net/byxdaz/article/details/4352778
另外,可通過DirectShow或OpenCV實現。具體資料自己搜吧
『柒』 關於MFC讀取攝像頭
你用的CCD攝像頭是USB么?同時有幾個USB攝像頭存在?
檢查一下cvCaptureFromCAM的參數是否正確。
還有就是不要對cvCapture 進行設置。試試先用默認設置試試看看能不能捕捉。
『捌』 MFC opencv 關於攝像頭的菜鳥問題!
你看看你開辟的動態內存,全部釋放了沒有?還有pFrame pFrame釋放了沒有,可能是內存占滿就就容易死機