2012-12-28 138 views
0

我在hp touchsmart 600上運行windows 7 64位(32位python)。前一段時間我卸載然後重新安裝opencv 2.4.3。在卸載和重新安裝之間,我卸載了一些我認爲沒有使用的程序。現在,opencv只有在opencv能夠正確訪問我的網絡攝像頭之前纔會顯示黑屏。但是,如果我使用相機2(即cam = create_capture(2,...)),opencv能夠正確使用我的網絡攝像頭。爲什麼相機0突然停止工作?它以某種方式成爲相機2還是可以卸載opencv訪問我的攝像頭所需的依賴項?此外,使用相機1和3也適用,即使我只有一個網絡攝像頭。opencv - 相機0不工作

+0

如果您只有一個相機,只需傳遞值-1(非零)即可。爲什麼相機0停止工作,我只能猜測,在Windows下不能保證第一個凸輪被分配爲0.但我建議移動到更新的OpenCV API。在這個新版本中,您可以使用'VideoCapture'而不是'CaptureFromCam',現在您指定0(在舊版API中的操作與-1相同)。 – mmgp

+0

你能否解釋一下你的意思是新的opencv api?是不是最新的opencv 2.4.3? – bab

+3

OpenCV 2.4.3是最新發布版本。在它裏面,python綁定有兩個API,舊的'cv'和新的'cv2'。檢查此:http://stackoverflow.com/questions/10417108/what-is-different-between-all-these-opencv-python-interfaces/10425504#10425504 –

回答

0

攝像機0指向您的默認攝像頭驅動程序,攝像頭1指向次駕駛員,攝像頭2指向第三駕駛員,等等。

這意味着即使使用單個相機硬件,也可以有多個可以訪問它的驅動程序。

我們假設您的主要相機驅動程序(可能由HP提供)在卸載過程中損壞。這意味着當你調用攝像頭0時,你正在實例化HP驅動程序(現在已損壞),這會給你一個黑屏。

但是,由於您的相機硬件不受影響,您的二級和三級相機驅動程序也不受影響,所以當您訪問相機1時,您的二級相機驅動程序會正確流動實時進紙。

如果您沒有三級相機驅動程序,相機2將指向次級驅動程序。因此,如果沒有驅動程序與相機2關聯,則相機2將調用與相機1相對應的驅動程序。