首先之前已經成功的使用Python做圖像的目標檢測,這回因為項目最終是需要用攝像頭的,
所以實現攝像頭獲取圖像,并且用Python調用CAFFE接口來實現目標識別
首先是攝像頭請選擇支持Linux萬能驅動兼容V4L2的攝像頭,
因為之前用學ARM的時候使用的Smart210,我已經確認我的攝像頭是支持的,
我把攝像頭插上之後自然就在 /dev 目錄下看到多了一個video0的文件,
這個就是攝像頭的設備文件了,所以我就沒有額外處理驅動的部分
一、檢測環境
再來在開始前因為之前按著國嵌的指導手冊安裝的opencv3.2當時沒有開啟V4L2及GTK_2.x的支持,
所以後面遇到了一連串的問題,請大家如下面方法檢測
$ python
1.檢測Python的V4L2支持及攝像頭驅動是否正常
進入Python之後如下命令
Python 2.7.12 (default, Nov 19 2016, 06:48:10)[GCC 5.4.0 20160609] on linux2Type "help", "copyright", "credits" or "license" for more information.>>> import cv2>>> cap = cv2.VideoCapture(0)>>> print cap.isOpened()True>>>
如果 返回True就代表攝像頭及你的opencv的V4L2支持就已經完全正常了
如果返回False就代表opencv或是攝像頭有問題叁考後面的修改方式
2.再來因為我們要把攝像頭的影像生成窗口,所以我們需要檢測Python的gtk支持如下
>>> import cv2>>> cv2.namedWindow('test',cv2.WINDOW_AUTOSIZE)>>>
如果沒有報任何錯誤就代表gtk也是正常的
如如果出現下面提示
OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script) in cvNamedWindow,
那就代表opencv不支持gtk
如果上面兩個測試都是好使的你可以跳過本步驟
首先我發現我不論如何重新編譯opencv發現python一直都是有問題的,
最後發現是因為不知道什麼時候已經裝過 python-opencv的包了
可以用命令
$ pip list |grep opencv
如果發現有任何跟opencv有關的包都可以利用 pip uninstall xxx 來移除
假設看到 pythom-opencv的包那就 pip uninstall opencv-python 來移除
還有檢查dpkg -i |grep opencv 如果跟python的opencv有關的包也得移除
$ sudo apt-get remove python-opencv
然後到你之前安裝opencv3.2的那個源碼目錄,
$ cd build$ make uninstall
這樣就會卸載之前安裝的opencv
再來V4L的頭文件已經改名了,但是opencv會默認使用linux/videodev.h所以要做個軟鍊接
新聞熱點
疑難解答