轉:虛擬機Ubuntu打開攝像頭失敗及OpenCV打開攝像頭超時的問題

虛擬機Ubuntu打開攝像頭失敗及OpenCV打開攝像頭超時的問題

 轉載來自:https://blog.csdn.net/qq_30155503/article/details/79460420

平臺版本:Ubuntu 14.04 + Opencv 3.4.0

    最近着手用opencv實現人臉識別,遇到一些問題:在虛擬機Ubuntu上安裝好opencv庫後,編譯官方自帶的示例samples/cpp/example_cmake成功,運行竟然失敗!!!

錯誤輸出:

Built with OpenCV 3.4.0
Capture is opened
select timeout
select timeout
OpenCV Error: Assertion failed (total() == 0 || data != __null) in Mat, file /root/library/opencv/opencv-3.4.0/modules/core/include/opencv2/core/mat.inl.hpp, line 500
terminate called after throwing an instance of 'cv::Exception'
  what():  /root/library/opencv/opencv-3.4.0/modules/core/include/opencv2/core/mat.inl.hpp:500: error: (-215) total() == 0 || data != __null in function Mat

已放棄 (核心已轉儲)

打開攝像頭超時!!!

這究竟是什麼原因呢?

首先,當然是百度一下,竟然找不到解決方法。算了,還是靠自己好。

問題的出現,一般不會因爲代碼問題,畢竟是官方給出來的示例啊,有足夠的理由相信它是靠譜的。

那可能是:庫的安裝問題?攝像頭問題?其他???

若是庫問題的話,自行找個簡單可靠的HelloWorld程序來測試下。

這裏我直接預言,是攝像頭問題!

 

一、虛擬機Ubuntu檢測攝像頭是否已正常插入

    插上USB攝像頭,在/dev下並未發現有video設備?是因爲攝像頭連接在了主機上,而非虛擬機。因此,需要將設備移到虛擬機上。

    虛擬機連接攝像頭: 

“虛擬機(M) -> 可移動設備(D) -> Logitech USB Camera -> 連接(斷開與主機的連接)”

    即可發現 /dev下有了 video0 設備。

 

二、虛擬機Ubuntu上打開攝像頭

    Ubuntu上如何打開攝像頭?這裏需要安裝一個軟件“cheese”。

1、安裝“cheese”,打開攝像頭

    “cheese”是一個使用攝像頭進行拍照和攝像,並可以使用一些花哨的特效,可以讓你與他人分享你的樂趣。

    安裝:    $ sudo apt-get install cheese

    運行:    $ cheese

    發現攝像頭燈亮了,但畫面黑黑一片(等待一段時間或會出現不完整圖像,並且卡住不動)

    Ubuntu打開攝像頭失敗,難怪opencv打開攝像頭會超時。問題應該就出現在這裏!!!

    這個問題,百度能找到解決辦法。

2、設置虛擬機,成功打開攝像頭

    在虛擬機上打開 “虛擬機(M) -> 設置(S)”

    點擊“USB控制器”,更換“USB兼容性(C)”:若是USB 2.0 則換成USB 3.0,若是USB 3.0 則換成USB 2.0。

    設置完成後虛擬機會自動重啓。

3、再次運行“cheese”打開攝像頭

    首先斷開虛擬機的攝像頭,再重新連接。(操作見上)

    運行cheese,結果如圖:

成功打開攝像頭!

 

三、OpenCV打開攝像頭

    回到 samples/cpp/example_cmake 下,

    編譯運行:

    $ cmake . & make & ./samples/cpp/example_cmake

    

    搞定,收工!

 

    備註:此博客專爲解決【Ubuntu14.04安裝Opencv3.4.0】問題而生

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章