树莓派安装opencv及tensorflow实现图像识别

树莓派安装opencv及tensorflow实现图像识别

参考:1.树莓派4 安装OPENCV3全过程(各种踩坑和报错)
2.树莓派实现目标检测识别(树莓派4+opencv4.1.1+tensorflow1.14.0+ssd_mobilenet_v1_coco)

1. 安装opencv

1.1 换源

第一步先更换源,更新下载更快;
①在终端输入以下指令

sudo nano /etc/apt/sources.list

用#注释掉原文件内容,用以下内容取代:

deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi

如图:
然后ctrl+o保存,点回车确认保存,然后ctrl+x退出
然后ctrl+o保存,点回车确认保存,然后ctrl+x退出

②在终端输入以下指令

 sudo nano /etc/apt/sources.list.d/raspi.list

用#注释掉原文件内容,用以下内容取代:

deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui

如图:
在这里插入图片描述
然后ctrl+o保存,点回车确认保存,然后ctrl+x退出

③使用命令更新软件源列表,同时检查编辑是否正确。再更新软件

 sudo apt-get update
 sudo apt-get upgrade

1.2 存储空间的一些说明和操作

建议使用32G以上的内存卡
扩大文件系统。因为,用SD卡安装完系统后一大部分空间实际是未被分配的
使用命令

sudo raspi-config

然后选择第七个
在这里插入图片描述
然后选择第一个回车,最后按esc退出
在这里插入图片描述

1.3 增加交换空间

增加交换空间以避免因内存问题导致的编译挂起
输入命令

sudo nano /etc/dphys-swapfile

将 CONF_SWAPSIZE 值从默认值更改 100 为 1024 :
如图
在这里插入图片描述
然后ctrl+o保存,点回车确认保存,然后ctrl+x退出,并运行以下命令以使更改生效:

sudo /etc/init.d/dphys-swapfile restart

1.4 下载工具及包

①安装OpenCV的相关工具

sudo apt install build-essential cmake git pkg-config libgtk-3-dev libcanberra-gtk*
sudo apt install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev
sudo apt install libjpeg-dev libpng-dev libtiff-dev gfortran openexr libatlas-base-dev opencl-headers
sudo apt install python3-dev python3-numpy libtbb2 libtbb-dev libdc1394-22-dev

②创建一个新目录并从 Github 克隆 OpenCV 和 OpenCV contrib 存储库:

mkdir ~/opencv_build && cd ~/opencv_build
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git

因为Github服务器不在国内,并且不支持断点续传,如果失败,可以多试几次。
克隆存储库后,创建一个临时构建目录,然后切换到该目录:

mkdir -p ~/opencv_build/opencv/build
cd ~/opencv_build/opencv/build

1.5 设置编译编译参数

cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D INSTALL_C_EXAMPLES=OFF \
    -D INSTALL_PYTHON_EXAMPLES=OFF \
    -D OPENCV_GENERATE_PKGCONFIG=ON \
    -D ENABLE_NEON=ON \
    -D ENABLE_VFPV3=ON \
    -D BUILD_TESTS=OFF \
    -D OPENCV_ENABLE_NONFREE=ON \
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_build/opencv_contrib/modules \
    -D BUILD_EXAMPLES=OFF ..

“\” 代表将代码延续到下一行
输出结果如下所示:

...
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pi/opencv_build/opencv/build

1.6 开始编译

运行

make -j4

过程较长,耐心等待。
编译结束了会出现下面这个结果

...
[100%] Linking CXX shared module ../../lib/python3/cv2.cpython-35m-arm-linux-gnueabihf.so
[100%] Built target opencv_python3

成功后安装已编译的 OpenCV 文件:

sudo make install

时间很快,结果如下

...
-- Installing: /usr/local/bin/opencv_version
-- Set runtime path of "/usr/local/bin/opencv_version" to "/usr/local/lib"

最后检查opencv安装成功与否
C++库:

pkg-config --modversion opencv4

结果:

4.1.1

(只要不报错,就问题不大)
Python库:

python3 -c "import cv2; print(cv2.__version__)"

结果:

4.1.1-pre

如果 SD 卡上没有足够的可用空间,请删除源文件:

rm -rf ~/opencv_build

大量交换使用可能会损坏您的 SD 卡。将交换空间更改回原始大小:

sudo nano /etc/dphys-swapfile

将 CONF_SWAPSIZE 值改回 100

保存文件并激活更改:

sudo /etc/init.d/dphys-swapfile restart

完成。

2. 树莓派实现目标检测识别

2.1 安装TensorFlow1.14.0

首先,安装matplotlib库

sudo pip install matplotlib

接着,安装一下编译环境

sudo apt-get install python3-pip python3-dev
sudo apt install libatlas-base-dev

最后,直接安装TensorFlow

sudo pip3 install TensorFlow

2.2 API下载

直接进行git.

git clone https://github.com/tensorflow/models.git

在这里插入图片描述

2.3 ssd_mobilenet_v1_coco下载

模型链接:https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md

首先进入目录

cd models/research/object_detection/models

然后将ssd_mobilenet_v1_coco模型下载下来

wget download.tensorflow.org/models/object_detection/ssd_mobilenet_v1_coco_2018_01_28.tar.gz

接着进行解压

tar -xzvf ssd_mobilenet_v1_coco_2018_01_28.tar.gz

在这里插入图片描述

2.4 Protobuf 安装与配置

(1)下载
protobuf下载地址:https://github.com/google/protobuf/releases
我直接下载的最新版本:protobuf-all-3.11.2.tar.gz

cd
wget https://github.com/protocolbuffers/protobuf/releases/download/v3.11.2/protobuf-all-3.11.2.tar.gz

在这里插入图片描述
(2)安装

tar -xf  protobuf-all-3.11.2.tar.gz          ->解压      
cd protobuf-3.11.2                           ->进入该文件夹
./configure                                  ->执行   
make                                         ->时间有点长
make check                                   ->这一步是检查编译是否正确,耗时非常长

如果出现如下结果,可以看到所有的测试用例都PASS了,说明编译正确:
在这里插入图片描述

sudo make install  
sudo ldconfig                                       ->更新库搜索路径,否则可能找不到库文件

(3)配置
配置的目的是将proto格式的数据转换为python格式,从而可以在python脚本中调用,进入目录models-master/research,运行:

cd
cd models/research
protoc object_detection/protos/*.proto --python_out=.

2.5 测试

测试代码文件链接:https://pan.baidu.com/s/1jGnOF1s1UAvMTV4w6JW_YQ
提取码:9p2m
(FileZilla下载可以直接百度,连接时树莓派和电脑连接同一个WiFi,主机填写树莓派IP地址,在终端输入ifconfig可直接查询,原始密码是:raspberry)

将测试代码放入models/research/object_detection/models目录中
在这里插入图片描述
进入终端,输入下列命令

cd models/research/object_detection/models
sudo chmod 666 /dev/video0                         ->要保证摄像头插紧了,不然会报错
python3 test.py

在这里插入图片描述
等一会,接着会出现检测对话框,效果如图。
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值