匿名
未登录
登录
丢石头百科
搜索
查看“树莓派OpenCV系列教程1:开发环境搭建”的源代码
来自丢石头百科
名字空间
页面
讨论
更多
更多
页面选项
查看
查看源代码
历史
←
树莓派OpenCV系列教程1:开发环境搭建
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
本章将介绍OpenCV开发环境的搭建,搭建的版本为OpenCV4.1.0,同时支持Python3和C++,在搭建好后,将通过一个C++和Python的Demo打开CSI摄像头来测试开发环境是否搭建完成。 == 1 烧录系统 == 本教程采用的镜像是树莓派官方2019年7月10日发布的发行版镜像,代号Buster,如下图所示: [[File:20190821152022.png]] == 2 基本设置 == === 2.1 把目录扩展到整个TF卡 === 本次搭建OpenCV开发环境,至少选择16G的TF卡,为了充分利用TF的存储空间,需要将TF卡空间扩展到整个TF卡。 在命令行输入命令,进入树莓派配置界面,用上下左右切换光标位置。 <syntaxhighlight lang="python"> <syntaxhighlight lang="python"> sudo raspi-config </syntaxhighlight></syntaxhighlight> [[File:20190830130336.png]] [[File:20190830130406.png]] === 2.2 开启摄像头 === 作为开源计算机视觉库,主要进行图像处理,对摄像头图像数据进行处理是主要需求,因此,开启摄像头是很有必要的。 ==== 2.2.1 启用摄像头 ==== <syntaxhighlight lang="python"> <syntaxhighlight lang="python"> sudo raspi-config </syntaxhighlight></syntaxhighlight> 进入Interfacing Options->Camera->Yes,即可启用摄像头。 检测摄像头是否正常,可以使用以下命令进行检测: <syntaxhighlight lang="python"> <syntaxhighlight lang="python"> raspivid -t 0 -cs 0 </syntaxhighlight></syntaxhighlight> ==== 2.2.2 准备视频流设备 ==== 在OpenCV中,若要读取摄像头数据,需要开启v4l2(video for linux 2),开启后,摄像头设备文件为/dev/video0,OpenCV将从该文件中读取视频流文件。 开启方法如下: <syntaxhighlight lang="python"> <syntaxhighlight lang="python"> sudo vim /etc/modules </syntaxhighlight></syntaxhighlight> 在末尾添加一行: <syntaxhighlight lang="python"> <syntaxhighlight lang="python"> bcm2835-v4l2 </syntaxhighlight></syntaxhighlight> === 2.3 更换软件源 === 鉴于国内网络环境下载各大镜像,软件包速度慢的问题,需要更换软件源,以防下载慢,且在本教程中,统一更换为清华源。 ==== 2.3.1 更换树莓派软件源 ==== 包括系统源与系统更新源,操作方法: <syntaxhighlight lang="python"> <syntaxhighlight lang="python"> # 编辑 `/etc/apt/sources.list` 文件,删除原文件所有内容,用以下内容取代: deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib # 编辑 `/etc/apt/sources.list.d/raspi.list` 文件,删除原文件所有内容,用以下内容取代: deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui </syntaxhighlight></syntaxhighlight> 如下图所示: [[File:20190830132453.png]] [[File:20190830132542.png]] 清华软件源Raspbian官方说明 ==== 2.3.2 更换pip软件源 ==== 为加速Python pip安装速度,特更改Python软件源,操作方法: <syntaxhighlight lang="python"> <syntaxhighlight lang="python"> pip install pip -U pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple </syntaxhighlight></syntaxhighlight> 清华软件源Pypi官方说明 === 2.4 重启 === 以上步骤均完成之后,需要进行重启才生效,重启命令如下: <syntaxhighlight lang="python"> <syntaxhighlight lang="python"> sudo reboot </syntaxhighlight></syntaxhighlight> == 3 安装OpenCV所需要的库 == === 3.1 安装numpy === <syntaxhighlight lang="python"> <syntaxhighlight lang="python"> sudo pip3 install numpy </syntaxhighlight></syntaxhighlight> === 3.2 安装OpenCV所需的依赖 === <syntaxhighlight lang="python"> <syntaxhighlight lang="python"> sudo apt-get install build-essential git cmake pkg-config -y sudo apt-get install libjpeg8-dev -y sudo apt-get install libtiff5-dev -y sudo apt-get install libjasper-dev -y sudo apt-get install libpng12-dev -y sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev -y sudo apt-get install libgtk2.0-dev -y sudo apt-get install libatlas-base-dev gfortran -y </syntaxhighlight></syntaxhighlight> == 4 下载OpenCV == 本次安装的OpenCV版本为OpenCV 4.1.0, 官方链接地址 需要下载包括OpenCV与OpenCV_Contrib两个仓库 OpenCV_4.1.0仓库: Github地址 OpenCV_Contrib_4.1.0仓库: Github地址 鉴于下载速度慢,建议采用Git Bash下载: 下载命令如下,注意添加—recursive及-b 4.1.0 <syntaxhighlight lang="python"> <syntaxhighlight lang="python"> git clone -b 4.1.0 --recursive https://github.com/opencv/opencv.git git clone -b 4.1.0 --recursive https://github.com/opencv/opencv_contrib.git </syntaxhighlight></syntaxhighlight> 下载后,建议采用Fillzilla或者U盘等方法把文件传输到树莓派中。 [[File:20190830153146.png]] 当然,也可以直接在树莓派命令行窗口执行以上命令进行下载,但请确保网络稳定。 == 5 配置Cmake == Cmake是一款跨平台的编译工具,经过配置,可输出适配于树莓派平台的Makefile <syntaxhighlight lang="python"> <syntaxhighlight lang="python"> cd /home/pi/Downloads/opencv-4.1.0 mkdir build cd build </syntaxhighlight></syntaxhighlight> 配置Cmake,执行以下命令: <syntaxhighlight lang="python"> <syntaxhighlight lang="python"> 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/Downloads/opencv-4.1.0/opencv_contrib-3.4.0/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 \ .. </syntaxhighlight></syntaxhighlight> 注意,以上命令需要根据您具体的软件环境进行修改,否则很可能报错。 其中: * CMAKE_BUILD_TYPE=RELEASE \ 代表编译类型为发行版本 * CMAKE_INSTALL_PREFIX=/usr/local \ 安装路径 * INSTALL_C_EXAMPLES=ON \ C demo * INSTALL_PYTHON_EXAMPLES=ON \ Python demo * OPENCV_EXTRA_MODULES_PATH=/home/pi/Downloads/opencv-4.1.0/opencv_contrib-3.4.0/modules \ OpenCV Contrib路径 * BUILD_EXAMPLES=ON \ 编译demo * WITH_LIBV4L=ON \ 开启Video for Linux * PYTHON3_EXECUTABLE=/usr/bin/python3.7 \ Python3路径 * PYTHON_INCLUDE_DIR=/usr/include/python3.7 \ Python3 include文件夹 * PYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.7m.so \ Python3库 * PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include \ Python3 Numpy安装路径 * .. 如下图所示: [[File:20190829173935.png]] cmake 配置完成后的界面如下图所示: [[File:20190829172645.png]] 注意:cmake执行时间一般在15分钟左右。 == 6 编译 == 在Cmake生成Makefile之后,便可进行编译: 输入并执行: <syntaxhighlight lang="python"> <syntaxhighlight lang="python"> make </syntaxhighlight></syntaxhighlight> 即开始进行编译,编译过程如下图所示: [[File:20190829203241.png]] 注意:make编译时间比较长,一般编译时间在5小时左右。 == 7 安装 == 输入以下命令即可进行安装: <syntaxhighlight lang="python"> <syntaxhighlight lang="python"> sudo make insall </syntaxhighlight></syntaxhighlight> 注意:install安装时间一般在1分钟左右。 == 8 测试是否安装完成 == 测试包括Python及C++的测试,用到了摄像头及简单的OpenCV处理函数。 === 8.1 Python3: === <syntaxhighlight lang="python"> <syntaxhighlight lang="python"> #!/usr/bin/env python ''' Waveshare OpenCV Tutorial 00_Test_OpenCV.py A demo to show whether The OpenCV and CSI camera is well installed ''' import numpy as np import cv2 def main(): print("OpenCV Version:{}".format(cv2.__version__)) # 0: use CSI camera,1:use USB camera cap = cv2.VideoCapture(0) if(not cap.isOpened()): print("can't open this camera") while(True): ret, FrameImage = cap.read() if ret == True: # change to gray image GrayImage = cv2.cvtColor(FrameImage, cv2.COLOR_BGR2GRAY) # blur the image BlurImage = cv2.blur(GrayImage,(7,7)) # use canny to detect contour CannyImage = cv2.Canny(BlurImage,3,9) # show the image cv2.imshow('Camera Capture',CannyImage) #Press Q to quit if (cv2.waitKey(1)) == ord('q'): cap.release() break else: break if __name__ == '__main__': print(__doc__) main() # Release resource cv2.destroyAllWindows() </syntaxhighlight></syntaxhighlight> 执行该Python脚本的情况如下: [[File:20190830201403.png]] === 8.2 C++: === <syntaxhighlight lang="python"> <syntaxhighlight lang="python"> #include<iostream></iostream> #include<opencv2 opencv.hpp=""></opencv2> #include<opencv2 highgui="" highgui.hpp=""></opencv2> #include<opencv2 imgproc="" imgproc.hpp=""></opencv2> using namespace std; using namespace cv; int main() { cout << "Waveshare OpenCV Tutorial"<< endl; cout << "00_Test_OpenCV"<<endl class="hljs-built_in" style="color: rgb(222, 147, 95);">cout << "A demo to show whether The OpenCV and CSI camera is well installed" <<endl class="hljs-built_in" style="color: rgb(222, 147, 95);">cout << endl; cout << "OpenCV Version:" << CV_VERSION << endl; // 0: use CSI camera,1:use USB camera VideoCapture cap(0); if(!cap.isOpened()) { cout<<"can't open this camera"<<endl class="hljs-keyword" style="color: rgb(178, 148, 187);">return -1; } Mat FrameImage,GrayImage,BlurImage,CannyImage; while(1) { cap>>FrameImage; //Change to gray image cvtColor(FrameImage,GrayImage,COLOR_BGR2GRAY); //blur the image blur(GrayImage,BlurImage,Size(7,7)); //use canny to detect contour Canny(BlurImage,CannyImage,3,9); //show the image imshow("Camera Capture",CannyImage); //Press Q to quit if(char(waitKey(1)) == 'q') { break; } } return 0; } </endl></endl></endl></syntaxhighlight></syntaxhighlight> CMakeLists.txt: <syntaxhighlight lang="python"> <syntaxhighlight lang="python"> cmake_minimum_required(VERSION 3.0) project(00_Test_OpenCV) find_package(OpenCV REQUIRED) add_executable(00_Test_OpenCV 00_Test_OpenCV.cpp) target_link_libraries(00_Test_OpenCV ${OpenCV_LIBS}) </syntaxhighlight></syntaxhighlight> 编译并运行: [[File:143617yhc1vzufpuvvxz44.png]] == 9 结语 == 若中途有安装失败,或多次尝试安装失败,不想浪费时间在搭建环境上,可直接使用我们提供的镜像,在我们提供的镜像中,除了已安装OpenCV4.1.0之外,还安装了TensorFlow和Keras,如下图所示: [[File:20190830204006.png]] 链接: https://pan.baidu.com/s/1e1neaOQQhug-SL9zDofzKQ 提取码: 4mw6 扩展名为.z01的文件是zip文件的分卷,请同时下载两个文件,并将其放到同一个文件夹下,然后解压zip文件,即可得到镜像,大概15G左右,然后使用烧录工具烧写该镜像即可。
返回至
树莓派OpenCV系列教程1:开发环境搭建
。
导航
导航
首页
最近更改
随机页面
MediaWiki帮助
首页
首页
树莓派
主机
配件包
外壳
键鼠
电源
扩展板
显示屏
墨水屏
摄像模块
通信模块
继电器
电机驱动板
游戏机
产品分类
树莓派
Arduino
micro:bit
STM32
Espressif
WiFi模块
蓝牙模块
无线模块
LoRa模块
4G模块
GSM
GPRS
以太网
导航模块
北斗卫星
GPS
LCD
墨水屏
OLED
摄像头
USB模块
串口模块
RS232
RS485
CAN
传感器
温度模块
湿度模块
气压模块
继电器
电机模块
指纹模块
电平转换
音频模块
编程器
Wiki工具
Wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志