2014-09-27 106 views
0

我已經通過firewire連接了一個cam並嘗試使用opencv訪問它。相機在香菜中檢測到並能夠獲得視頻流。下面是我的代碼使用Opencv在linux上檢測不到firewire攝像頭

#include "/home/iiith/opencv-2.4.9/include/opencv/cv.h" 
    #include "/home/iiith/opencv-2.4.9/include/opencv/highgui.h" 
    #include "cxcore.h" 
    #include <iostream> 

    using namespace cv; 
    using namespace std; 

    int main(int,char**) 
    { 
     VideoCapture cap(0); 
     if(!cap.isOpened()) 
      cout<<"Camera not detected"<<endl; 
     while(1) 
     { 
      Mat frame; 
      namedWindow("display",1); 
      cap >> frame; 
      imshow("display",frame); 
      waitKey(0); 
     } 
    } 

當我運行這段代碼,視頻從網絡攝像頭,而不是我的火線凸輪流。我在朋友的系統中嘗試了相同的代碼,並檢測到火線凸輪。我使用不同的命令測試設置,如testlibraw,lsmod,它們都是一樣的。甚至Opencv版本2.4.9,Ubuntu 12.04都是一樣的。這真的很奇怪,並且在這2天。任何人都可以告訴我有什麼區別?如何獲得在opencv中檢測到的外部凸輪?提前致謝。

注意:這與設置默認凸輪有什麼關係嗎?謝謝。

更新1:VideoCapture cap(1)給出以下錯誤 HIGHGUI錯誤:V4L:索引1不正確!

這是否意味着相機無法識別?

+2

無關,但請*不要*使用絕對路徑包括,也不要使用過時的OpenCV c-api標題,但是「opencv2/highgui/highgui.hpp」 – berak 2014-09-27 06:49:15

+2

'視頻捕捉帽(0);'表示默認攝像頭,'視頻捕捉帽(1);'應該是另一個攝像頭,這是什麼? – Chernobyl 2014-09-27 06:53:27

+0

@berak謝謝。你無關的意思是什麼? – 2014-09-27 06:53:45

回答

0

可能的問題可能是通過火線連接的相機無法被系統識別。

首先嚐試使用AMcap或某些其他網絡攝像頭軟件查看相機輸出,並檢查是否能看到此圖像。

如果您無法在amcap中看到視頻,則表示該特定相機的驅動程序缺失。

+0

我補充說我能夠通過香菜認出相機。 – 2014-10-02 12:50:57

1

首先,您應該確定相機是從您的s.o.

  • 拔下攝像頭並等待幾秒鐘;
  • 開放終端和數字:
    • 手錶的dmesg
    • 的lspci | grep的-E -i「(1394 |火線)」#這可以給你的東西
  • 堵塞你的設備和閱讀終端
  • 新的條目,如果您的設備被識別,你可以這樣啓動命令:
    • mplayer的電視:// -tv驅動程序=用v412:寬= 352:高度= 288