2009-06-26 135 views
2

我正在研究當前版本具有網絡攝像頭的自定義設備驅動程序的軟件,並且我們將此驅動程序與我們的軟件一起使用,它在顯示之前更改捕獲圖像,與YouCam非常相似。如何掛接攝像頭捕獲?

基本上,當任何使用網絡攝像頭的應用程序啓動時,我們的驅動程序會在顯示它之前在幀中執行處理。

問題是,總是會安裝「2」網絡攝像頭,真正的和我們的自定義驅動程序。

我注意到YouCam做我們需要的東西,就是在任何已安裝的網絡攝像頭中掛鉤一些方法,在顯示它之前處理每一幀。

有誰知道如何做到這一點?

我們使用VC++。

感謝

回答

1

查看OpenCV庫。它有大量的教程示例和庫,它們完全符合你的要求。安裝有點困難,但我之前已經開始使用它。

2

正如bkritzer所說,OpenCV很容易做到你想要的。

IplImage *image = 0; // OpenCV type 
CvCapture *capture = 0; // OpenCV type 

// Create capture 
capture = cvCaptureFromCAM (0); 
assert (capture, "Can't connect webcam"); 

// Capture images 
while (stilCapturing) 
{ 
    // Grab image 
    cvGrabFrame (capture); 
    // Retrieve image 
    image = cvRetrieveFrame (capture); 
    // You can configure refresh time 
    if (image) cvWaitKey (refreshTime); 
    // Process your image here 
    //... 
} 

可以封裝這些OpenCV的調用到一個C++類和奉獻它的特殊話題 - 這些將是你的驅動程序。

0

嗯,我認爲有這問題2個關鍵概念已經被人誤解。

1)如何攝像頭捕捉
2)......使用網絡攝像頭任何應用。 ..

如果我理解正確,OpenCV對於編寫自己的完整應用程序非常有用,完全意義上它將打開相機並處理圖像。所以它不會滿足點2),我的理解是指其他應用程序(不是你的!)打開相機,你的應用程序處理圖像。

點1)似乎證實了這一點,因爲「鉤子」是一個詞,通常意味着攔截其他一些不屬於您自己的應用程序的進程。 所以我懷疑這個問題是否被回答。我也對它感興趣。