Nano上CSI攝像頭及人臉檢測

2021-09-24 23:58:22 字數 3137 閱讀 9343

上篇部落格中我們的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...