上篇部落格中我們的jetbot已經刷好系統了。做cv方向的資料分析離不開攝像頭資料採集, nano上自帶csi介面,適合使用樹莓派攝像頭。
購買樹莓派攝像頭一定要imx219 sensor的樹莓派攝像頭,否則是無法使用的。
安裝樹莓派攝像頭
首先把nano的這個csi介面的這個銷子輕輕拔起,記住一定要小心,千萬別拔斷:
然後插入樹莓派攝像頭的排線線纜,一定要注意方向和正反,別插反了,把這個銷子固定好,這樣就安裝好了,檢查一下,將攝像頭的保護貼膜去掉
開啟你的第乙個相機影象
看樹莓派是否安裝好,我們在終端輸入 ls /dev/vid*
會顯示/dev/video0, 這表明樹莓派已經安裝好。
輸入這個指令:
$ gst-launch-1.0 nvarguscamerasrc ! 『video/x-raw(memory:nvmm),width=3820, height=2464, framerate=21/1, format=nv12』 ! nvvidconv flip-method=0 ! 『video/x-raw,width=960, height=616』 ! nvvidconv ! nvegltransform ! nveglglessink -e
將會看到攝像頭採集到的資料資訊。
測試乙個列子:
import cv2
def show_camera():
# to flip the image, modify the flip_method parameter (0 and 2 are the most common)
print gstreamer_pipeline(flip_method=0)
cap = cv2.videocapture(gstreamer_pipeline(flip_method=0), cv2.cap_gstreamer)
if cap.isopened():
window_handle = cv2.namedwindow(『csi camera』, cv2.window_autosize)
# window
while cv2.getwindowproperty(『csi camera』,0) >= 0:
ret_val, img = cap.read();
cv2.imshow(『csi camera』,img)
# this also acts as
keycode = cv2.waitkey(30) & 0xff
# stop the program on the esc key
if keycode == 27:
break
cap.release()
cv2.destroyallwindows()
else:
print 『unable to open camera』
ifname== 『main』:
show_camera()
$ python camera.py
camera.py是乙個python指令碼,它從攝像機中讀取資料,然後使用opencv在螢幕上顯示乙個視窗.
測試乙個opencv中人臉識別的例子:
import numpy as np
import cv2
def face_detect() :
face_cascade = cv2.cascadeclassifier(』/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml』)
eye_cascade = cv2.cascadeclassifier(』/usr/share/opencv/haarcascades/haarcascade_eye.xml』)
cap = cv2.videocapture(gstreamer_pipeline(), cv2.cap_gstreamer)
if cap.isopened():
cv2.namedwindow(『face detect』, cv2.window_autosize)
while cv2.getwindowproperty(『face detect』,0) >= 0:
ret, img = cap.read()
gray = cv2.cvtcolor(img, cv2.color_bgr2gray)
faces = face_cascade.detectmultiscale(gray, 1.3, 5)
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
roi_gray = gray[y:y+h, x:x+w]
roi_color = img[y:y+h, x:x+w]
eyes = eye_cascade.detectmultiscale(roi_gray)
for (ex,ey,ew,eh) in eyes:
cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)
cv2.imshow('face detect',img)
keycode = cv2.waitkey(30) & 0xff
# stop the program on the esc key
if keycode == 27:
break
cap.release()
cv2.destroyallwindows()
else:
print("unable to open camera")
ifname== 『main』:
face_detect()
$ python face_detect.py
至此 我們可以利用csi攝像頭做cv方向資料分析的例子,下篇部落格我們將對比目前nano和其他裝置的效能。
樹莓派 CSI攝像頭和USB攝像頭的配置與除錯
拍攝一張 安裝v4l2驅動使opencv能夠識別攝像頭 執行命令 sudo raspi config進入設定頁面後,之後按照下面步驟設定 選擇 inte cing options 選擇 camera 一直按回車後退出重啟樹莓派 利用 lsusb 可以檢視樹莓派上掛載的所有 usb 外設,將攝像頭插入...
一 樹莓派CSI攝像頭
攝像頭安裝 參見 有問題都可以在網上找到解決方法 sudo raspi config enable camera raspistill 拍照 v 除錯資訊檢視。w 影象寬度 h 影象高度 rot 影象旋轉角度,只支援 0 90 180 270 度 t 獲取影象前等待時間,預設為5000,即5秒 tl...
樹莓派上CSI攝像頭的使用
由於工程設計要用到樹莓派的攝像頭進行識別操作,本文將使用python opencv raspi 3b 來完成樹莓派csi攝像頭的配置使用,以及後續的擴充套件操作 樹莓派照相機 將排線的介面查在樹莓派上的對應位置即可,如下圖。一般有兩種方法,在這裡我們採用一種博主認為比較方便的方法。在命令列中輸入 s...