現在筆記型電腦都配有webcam,只要啟動特定軟體即可使用webcam來進行視訊聊天,那如果想用程式來擷取webcam的影像,就可以使用OpenCV提供的API,接著進一步做處理和應用。
本程式碼需要先安裝OpenCV到Dev C++,可以參考我寫的這篇:Dev-C++4.9.9.2 安裝 OpenCV 2.0。
剛好這時候同學需要用到,我翻出半年前取得的程式碼,放在這邊以供需要的人使用。
/**
Theme: Webcam
Compiler: Dev C++ 4.9.9.2
Date: 100/10/22
Author: HappyMan
Blog: https://cg2010studio.wordpress.com/
*/
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
void onMouse(int event, int x, int y, int flags, void* param);
int main(int argc, char** argv){
CvCapture *capture;
IplImage *frame;
capture = cvCaptureFromCAM(0) ;
cvNamedWindow("Webcam",0);
cvSetMouseCallback("Webcam",onMouse,NULL);
while(true){
frame = cvQueryFrame(capture);
cvShowImage("Webcam",frame);
if(cvWaitKey(1)>=0){
break;
}
}
cvReleaseCapture(&capture);
cvDestroyWindow("Webcam");
return 0;
}
void onMouse(int Event, int x, int y, int flags, void* param){
printf("( %d, %d) ",x,y);
printf("The Event is : %d ",Event);
printf("The flags is : %d ",flags);
printf("The param is : %d\n",param);
}

Comments on: "[OpenCV] 使用 Webcam" (12)
版大你好,請問如何利用opencv找到web cam讀到影像的資料流(stream)?
讚讚
你好,感謝你分享了那麼多有用的知識,OpenCv新手~有個問題想請教,我想在Dev-C++4.9.9.2 的開發環境下想要把WebCam的視頻存取成圖檔再做影像處理,是使用什麼指令cvSavcImage嗎~可以的話麻煩能否有個小範例!! THX~
讚讚
不好意思~我找到問題了!!在cvSavcImage裡的路徑是一定要填入絕對路徑嗎~我嘗試過只打檔名她會跑出錯誤強制怪關掉程式。
讚讚
相對路徑也可以喔!測試的時候我都直接放跟程式碼一樣的資料夾中。
讚讚
很高興幫助到你:)
在while迴圈裡插入cvSaveImage這個函式,即可做到擷取webcam影像的功能,請記得設置按鍵當作擷取影響的訊號,不然程式每次進入迴圈都會執行到cvSaveImage喔!
讚讚
對了,要先下載OpenCV_1.0.exe,其它版本就無法使用了。
還有一篇 DEV-C++ 環境安裝 OpenCV http://blog.yam.com/dainn/article/19762446
請看他如何安裝,後再執行版大程式,然後出現上述缺少的三項檔案。
讚讚
看來你安裝的是OpenCV 1.0,現在最新版的OpenCV 2.3,若你以後還會繼續使用OpenCV開發,建議你可以安裝比較新的版本喔!我文章前頭已經增加了Dev-C++4.9.9.2 安裝 OpenCV 2.0的連結,可以參考!
讚讚
謝謝版大的文章,小弟解決了,感謝版大的教學。謝謝。
讚讚
不客氣!希望你也可以分享你如何解決問題,這樣對研究這方面有需求的朋友多少有些幫助!
讚讚
執行程式中出現缺少這三個檔:
cxcore100.dll、highgui100.dll、libguide40.dll
然後就去網路下載,安裝在C:\WINDOWS\system32之下就可以了喔!
可能是我的webcam問題吧?
謝謝版大的程式。
讚讚
呵~原來是安裝環境的問題!我這篇文章並沒有註明需先安裝好OpenCV,所以你才會無法順利跑我的程式,你可以參考我寫的這一篇:Dev-C++4.9.9.2 安裝 OpenCV 2.0。
讚讚
版大您好,照您的程式編譯後,出現下列訊息,
cannot find -lcvcam
ld returned 1 exit status
請問要如何處理呢?是否那裏出了問題,謝謝。
讚讚