1. 配置并更新树莓派系统
sudo raspi-config // 进入后打开摄像头、SSH
sudo apt-get update
sudo apt-get upgrade
sudo rpi-update
2. 安装OpenCV的相关工具
sudo apt-get install build-essential cmake git pkg-config
3. 安装OpenCV的图像工具包
sudo apt-get install libjpeg8-dev
sudo apt-get install libtiff5-dev
sudo apt-get install libjasper-dev
sudo apt-get install libpng12-dev
4. 安装视频I/O包
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
5.安装gtk2.0和优化函数包
sudo apt-get install libgtk2.0-dev
sudo apt-get install libatlas-base-dev gfortran
6. 下载OpenCV源码
wget -O opencv-3.4.1.zip https://github.com/Itseez/opencv/archive/3.4.1.zip
7.解压OpenCV
unzip opencv-3.4.1.zip
8. 安装OpenCV
// 根据下载的版本而定
cd opencv-3.2.0
// 创建release文件夹
mkdir release
// 进入release目录下
cd release
// cmake读入所有源文件之后,自动生成makefile
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local ..
// 编译
sudo make
// 安装
sudo make install
//更新动态链接库
sudo ldconfig
编译差不多7个小时,慢慢等…
9. 解决无法打开摄像头硬件问题
sudo nano /etc/modules
// 进入编辑界面后,在末尾添加输入
snd-bcm2835
bcm2835-v4l2
10. 测试用例Python代码
# -*- coding: utf-8 -*-
__author__ = "kyoRan"
import cv2
cap = cv2.VideoCapture(0) # 打开摄像头
print("VideoCapture is opened?", cap.isOpened())
while(True):
ret, frame = cap.read() # 读取摄像头图像
center = (frame.shape[1]//2, frame.shape[0]//2) # 图像中心点位置
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 转灰度
cv2.circle(gray, center=center, radius=100, color=(0,0,255)) # 画圆
cv2.imshow("frame", gray) # 显示图片
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release() # 释放摄像头
cv2.destroyAllWindows() # 关闭所有窗口
11.人脸识别代码
import numpy as np
import cv2
faceCascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
cap = cv2.VideoCapture(0)
cap.set(3,640) # set Width
cap.set(4,480) # set Height
while True:
ret, img = cap.read()
img = cv2.flip(img, -1)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = faceCascade.detectMultiScale(
gray,
scaleFactor=1.2,
minNeighbors=5,
minSize=(20, 20)
)
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]
cv2.imshow('video',img)
k = cv2.waitKey(30) & 0xff
if k == 27: # press 'ESC' to quit
break
cap.release()
cv2.destroyAllWindows()
haarcascade_frontalface_default.xml这个文件在网上下载到放到文件夹下就可以