2008年6月12日 星期四

OpenCV程式設計介紹(2)

視訊的使用也是OpenCV的基本功能之一,它可以做連續性的影像處理,比capCreateCaptureWindow()這個函式好用多了,capCreateCaptureWindow()在"vfw.h"裡,只能在MicroSoft的Visual C++及 Borland C++ builder使用,Dev-C++4.9.9.2不提供此函式,當然啦,OpenCV對於視訊的處理提供了比capCreateCaptureWindow()更強大的功能.

程式碼部份
#include <cv.h>
#include <highgui.h>
#include <stdio.h>

int main()
{
    CvCapture *capture;
    IplImage *frame;
    capture =cvCaptureFromCAM(0) ;
    cvNamedWindow("Webcam",0);
    while(true)
    {
        frame = cvQueryFrame(capture);
        cvShowImage("Webcam",frame);
        if(cvWaitKey(10)>=0)
        {
              break;
        }
    }
    cvReleaseCapture(&capture);
    cvDestroyWindow("Webcam");
}

裡面使用到CvCapture及IplImage兩個資料結構,CvCapture是一個Interface的資料結構,為一個資料結構的雛形,無任何的變數型別存在,由cvCaptureFromCAM(0)來選定Webcam裝置,cvCaptureFromCAM(0)的0代表自動偵測視訊裝置,如果有兩台以上的Webcam則就用連續兩個cvCaptureFromCAM(0)函式來擷取,接著,就用while(true)的無窮回圈來捕捉連續影像的圖形畫面,cvQueryFrame()則用來擷取每秒顯示出來的frame這裡由cvWaitKey(10)來控制擷取時間,每延遲10毫秒捕捉一次視訊畫面,cvWaitKey()為鍵盤事件,每超過10毫秒則會回傳-1,因此,畫面會因cvWaitKey(10)而延遲10毫秒,接著由無窮回圈來繼續播放,當鍵盤事件發生的時候則會跳出whlie的無窮回圈.接著就把CvCapture資料結構及視窗介面資料結構做記憶體的釋放.


執行結果:

12 意見:

Kelly 提到...

我是OPENCV的初學者,我用了您的程式去連我的筆電的WEBCAM,WEBCAM上的燈有亮,但是畫面是一片黑,我不知道問題是出在哪裡.我用的OPENCV是1.1版,開發環境是VS2008,作業系統是VISTA.我原本懷疑是WEBCAM壞掉,但是確認之後證明WEBCAM是好的.執行時一直跑出:The thread 'Win32 Thread' (0x444) has exited with code -1073741510 (0xc000013a).是對的嗎?

其實我也有用capCreateCaptureWindow,但是也是黑畫面.換個WEBCAM是好主意嗎?
不好意思,問了很多問題.
謝謝您!

匿名 提到...

我也是遇到相同的問題
我也是用筆店的Webcam
但是畫面出來是黑的
不知道有人知道原因嗎!?
是不能用內建的Webcam嗎!?

匿名 提到...

我重新安裝了VS2008 + opencv2.1
就成功了

匿名 提到...

請問有沒有利用cvCaptureFromCAM在VC6.0+opencv1.0可以開起筆電webcam的方法?

liao 提到...

最近發現大人的網站真是太高興了

慢慢接觸的我在這裡發生了很怪的問題

我一執行他就說我

while(ture)的true沒有宣告...

請問是發生什麼問題了><

trashprince 提到...

把true改成1就可以了

小小 提到...

謝謝你全部的文章^^

匿名 提到...

webcam畫面全黑可能是你的webcam編號不是0
改成1或2試試看

zox657 提到...

請問如何將連續的影像儲存成jpg檔?

匿名 提到...

webcam 一次能連2個程式嗎? 我想開雙視窗
1個負責錄影 1個負責拍照 有解嗎?

Unknown 提到...

請問,我想讀取資料庫裡多個影片,例如有1-16部影片,檔名就取數字1 - 16,我要如何讓他按照順序連續讀取這16部影片呢?

Unknown 提到...

請問,使用cvCaptureFromCAM(),有什麼指令可以令webcam暫停or關閉

Copyright 2008-2009,yester