一、风扇与散热片安装
散热片安装位置与风扇接线方式如图所示:
二、系统安装
1、从树莓派国内的清华源镜像下载系统的安装包,我使用的是2020-02-13-raspbian-buster-full.zip,这也是最后一代的raspbian系统,解压生成.img后缀文件。
2、准备好SD卡与读卡器,如果是新的SD卡就不用刷系统了,如果是用过的需要刷一下系统。
3、安装烧录工具Etcher
首先把FT卡插入读卡器中,并接到电脑的USB接口,打开烧录工具(Etcher),如下图所示,按照步骤进行即可。
-
因为树莓派系统目前已经禁用了ssh服务,所以如果要使用ssh的话,需要在TF卡根目录新建一个空白目录,目录名为ssh,注意没有任何后缀。
-
在根目录下新建一个名为“wpa_supplicant.conf”的空白文件,并添加以下内容(不包括注释部分):
country=CN ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="目标Wi-Fi名称" #注意区分大小写 psk="目标Wi-Fi密码" #注意区分大小写 }
三、SSH与VNC
- 树莓派地址获取:在命令行输入ifconfig命令即可获取当前树莓派的IP地址,或者联网之后鼠标停在网络设置位置就可以看到自己树莓派的主机号,我的是172.20.10.7
- 树莓派默认的用户名:pi,密码:raspberry
1、SSH
(1)树莓派开启ssh服务
输入树莓派配置命令sudo raspi-config
进入配置界面,将选中条选择到9 Advanced Options
(上下键移动选中条),回车。选中“A4 SSH”
,回车,然后通过选中“Yes”
(左右键移动选中条)来开启SSH服务。
(2)在电脑下载安装“putty”
,完成后打开软件,弹出配置界面,在主机名(Host Name)中输入树莓派对应IP地址、端口号,点击打开(弹出安全警告选择是)。
2、VNC
(1)树莓派开启VNC
输入树莓派配置命令sudo raspi-config
进入配置界面,将选中条选择到5 Interfacing Options
(上下键移动选中条),回车。选中“P3 VNC”
,回车,然后通过选中“Yes”
(左右键移动选中条)来开启VNC服务。
在树莓派中断输入vncserver
(2)电脑端开启VNC服务
在自己电脑上下载VNC Viewer,输入树莓派IP端口号默认为1,之后输入自己的主机号,账号和密码就可以开启。
设置开机自启动
sudo nano /etc/init.d/vncserver
复制进去
#!/bin/sh
### BEGIN INIT INFO
# Provides: tightvncserver
# Required-Start: $syslog $remote_fs $network
# Required-Stop: $syslog $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts VNC Server on system start.
# Description: Starts tight VNC Server. Script written by James Swineson.
### END INIT INFO
# /etc/init.d/tightvncserver
VNCUSER='pi'
case "$1" in
start)
su $VNCUSER -c '/usr/bin/vncserver :1'
echo "Starting VNC Server for $VNCUSER"
;;
stop)
su $USER -c '/usr/bin/vncserver -kill :1'
echo "VNC Server stopped"
;;
*)
echo "Usage: /etc/init.d/vncserver {start|stop}"
exit 1
;;
esac
exit 0
保存
修改文件权限
sudo chmod 755 /etc/init.d/vncserver
sudo update-rc.d vncserver defaults
如果要取消开机启动,则:
sudo update-rc.d -f tightvncserver remove
四、opencv的安装与人脸检测
1、树莓派扩容
输入树莓派配置命令sudo raspi-config
进入配置界面,将选中条选择到9 Advanced Options
(上下键移动选中条),回车。选中“A1 Expand”
,回车,然后通过选中“Yes”
(左右键移动选中条)来进行扩容。
2、换成清华大学源
首先执行sudo nano /etc/apt/sources.list
,之后按照清华源的说明做就行,之后用’ # '备注以前的最后加新的然后 ctrl+o ctrl+x,最后执行sudo nano /etc/apt/sources.list.d/raspi.list
3、下载opencv依赖的库文件
可以使用df -h
查看剩余的磁盘空间
sudo apt-get install build-essential cmake git pkg-config
sudo apt-get install libjpeg8-dev
sudo apt-get install libtiff5-dev
sudo apt-get install libjasper-dev
sudo apt-get install libpng12-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install libatlas-base-dev gfortran
4、opencv下载
(1)下载离线文件,并传输至树莓派进行解压
opencv下载,选择source文件
opencv_contrib下载,选在zip文件
缺失文件下载,3.4.6与4.1.0含有缺失文件
链接: https://pan.baidu.com/s/1MMssaWZESNPeyeTTirF_Bw
提取码: qemx
使用scp命令进行传输,输入命令后,会提示输入密码
scp D:\code\face.zip pi@172.20.10.7:/home/pi
(2)进行安装
- 新建一个opencv文件夹,并将生成的文件解压到其中。
- 进入文件夹,并新建一个release文件
cd ~/Opencv/opencv-3.4.6
新建release文件夹mkdir release
进入release文件夹cd release
- 设置cmake编译参数,注意第5航自己的路径
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=/home/pi/opencv/opencv_contrib-3.4.6/modules \#这一行
-D BUILD_EXAMPLES=ON \
-D WITH_LIBV4L=ON \
-D PYTHON3_EXECUTABLE=/usr/bin/python3.7 \
-D PYTHON_INCLUDE_DIR=/usr/include/python3.7 \
-D PYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.7m.so \
-D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include \
- 补充缺失
把文件夹 boostdesc_bgm.i,vgg_generated_48.i等 里的所有文件都拷贝到(4.1.0一样免的缺失报错)
opencv_contrib-3.4.6/modules/xfeatures2d/src/
- 编译
sudo make -j4 2>&1 | tee make.log
会出现多次报错
通常都是这一个错误因为头文件路径不对,解决方法就是找到有错误引用的源文件进行修改。这部分可以查看博客进行解决
- 安装
sudo make install
(3)人脸识别进行验证
import cv2
#找一个图片重命名为img,与程序文件放在一个文件夹下(要有人脸啊)
img = cv2.imread('/home/pi/face/1.jpg',1)
#这里要改用你的绝对路径
face_engine = cv2.CascadeClassifier('/home/pi/opencv/opencv-3.4.6/data/haarcascades/haarcascade_frontalface_default.xml')
faces = face_engine.detectMultiScale(img,scaleFactor=1.3,minNeighbors=5)
for (x,y,w,h) in faces:
img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
得到结果: