ubuntu下安裝opencv庫+Python2.7環境安裝及開發攝像頭拍照應用

很久沒有更新了,今天更一篇最近遇到的問題,及解決辦法,後面博客得繼續寫起來python

安裝

#使用Python下的lib庫直接進行安裝
apt-get install python-opencv

測試

#使用以下代碼進行測試,如下代碼是拍照,在按q以後,保存圖片並退出。

import cv2

cap = cv2.VideoCapture(0)
while(1):
    # get a frame
    ret, frame = cap.read()
    # show a frame
    cv2.imshow("capture", frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        cv2.imwrite("./test.jpeg", frame)
        break
cap.release()
cv2.destroyAllWindows()

至此表明安裝基本沒有問題,能夠進行下一步開發git

開發

經過在上述的測試代碼添加配置攝像頭的參數github

#設置攝像頭的像素
cap.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH,3264)
cap.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT,2448) 
#設置攝像頭的幀率
cap.set(cv2.cv.CV_CAP_PROP_FPS,5)

本覺得萬事大吉能夠收工了,一運行發現了個巨大的問題
錯誤以下提示ide

libv4l2: error converting / decoding frame data: v4l-convert: error 
destination buffer too small (16777216 < 23970816)
 VIDIOC_DQBUF: Bad address

看提示是由於本身想用到高清的,但是libv412庫不支持,致使buffer不夠大,產生的錯誤,經過libv4l2: error converting / decoding frame data: v4l-convert: error destination buffer too small 解決問題,下面說一下解決步驟測試

  • 找到libv4l2的源碼github
  • 更改源碼路徑下的lib/libv4l2/libv4l2-priv.h文件中的以下代碼
//The change was 
#define V4L2_FRAME_BUF_SIZE (4096 * 4096)
//to
#define V4L2_FRAME_BUF_SIZE (2 * 4096 * 4096)
  • 首先卸載系統以前的這個庫文件
sudo apt-get remove libv4l-dev
  • 編譯安裝剛改更改過的庫
#源碼目錄下先進行configure,這個中間貌似因爲沒有安裝autoconf之類的東西,也報過錯,出現錯誤後你們Google一下就能找到答案,都是些容易解決的問題
autoreconf -vfi 
make
make install

這樣庫文件就從新安裝了,測試一下,高清的攝像頭也能夠用了。ui

同時開多個攝像頭

本覺得萬事大吉了,萬萬沒想到又出幺蛾子了,同時打開三個攝像頭的時候又報錯了以下:spa

libv4l2: error turning on stream: No space left on device

一下就嗨皮了,查了一下貌似說是usb帶寬不夠用了,通過找資料找到下面的解決辦法code

sudo rmmod uvcvideo
#下面這個128能夠更改最好改大點,若是用的是高清攝像頭
sudo modprobe uvcvideo quirks=128

若是更改有效,能夠用下面的方法進行配置,這樣就不用每次都改了圖片

sudo vi /etc/modprobe.d/uvcvideo.conf 
options uvcvideo quirks=128

ok終於能夠順利運行了,上面的應用你們就能夠根據本身的須要隨便改了。開發

相關文章
相關標籤/搜索