树莓派配置OpenCV教程

初稿完成于2020.6.28

这份教程我觉得还是很全的QAQ是我当初配置的时候一步一步截图下来的(傲娇脸),配置的是OpenCV4.0.0~

大概以后有空还会发点OpenCV的相关东西趴orz

1、烧录镜像

首先,在官网上下载镜像:

https://www.raspberrypi.org/downloads/noobs/

下载最大的那个,嗯(因为软件最多),解压。

然后下载个SDFormatter和Win32DiskImager,图标长这样:

树莓派配置OpenCV教程_第1张图片

然后拿出你的SD卡和读卡器,先打开SDFormatter,格式化SD卡;然后打开Win32DiskImager,选择下载好的镜像(后缀应该是.img),烧到卡里面。镜像烧录完成。

2、更换软件源

嗯然后把卡插进树莓派,接上显示器和键盘、鼠标。

由于原本的软件源有很多坑,建议更换为清华软件源,步骤如下:

打开命令行,输入:

$ sudo nano /etc/apt/sources.list

这里的nano是Linux系统自带的一种文本编辑器,意思就是编辑这个文件。

把文件原来的代码注释掉,输入以下代码:

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

ctrl+X退出,选择保存,写入文件。

然后再在命令行内输入:

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

注释原来的代码,输入以下代码:

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

然后在命令行内输入:

$ sudo apt-get update
$ sudo apt-get upgrade

在当中问你要不要继续就输入Y,然后等吧。

3、配置串口

由于我们在使用的过程中,需要让树莓派的串口与外部通信,因此,需要配置串口的属性。命令行下输入:

$ sudo raspi-config

依次如下图选择:

树莓派配置OpenCV教程_第2张图片
树莓派配置OpenCV教程_第3张图片
树莓派配置OpenCV教程_第4张图片
树莓派配置OpenCV教程_第5张图片
树莓派配置OpenCV教程_第6张图片

然后退出即可,退出的时候先不要重启。

在命令行内输入:

$ sudo nano /boot/config.txt

在文件最后添加两行:

dtoverlay=pi3-miniuart-bt
force_turbo=1

保存退出。然后重启树莓派。

在命令行内输入命令:

$ ls /dev -al

树莓派配置OpenCV教程_第7张图片

如果得到的串口顺序是这样的,则说明配置成功。

4、远程连接

我下载的是2019.7.10版本的镜像,里面是默认带有VNC的,如果你不放心,那就再开启一下:

$ sudo raspi-config

树莓派配置OpenCV教程_第8张图片
树莓派配置OpenCV教程_第9张图片
树莓派配置OpenCV教程_第10张图片

然后用同样的方法把Camera,SSH什么的也开启一下,其它的IIC、SPI等等需要的话也开启一下。

将树莓派接入无线网(比如你的手机热点),然后在命令行内输入:

$ ifconfig

树莓派配置OpenCV教程_第11张图片

记住这个,它是你的树莓派的IP地址。

然后在你的电脑上下载一个VNC。。。(不需要注册登录,下载就完事了)

在电脑上的VNC的空白处右击,点击new connections

树莓派配置OpenCV教程_第12张图片

在这里面输入名字和树莓派的IP地址,点击OK

双击连接,中间出现密钥啥的就接受,然后输入用户名和密码(默认是pi和raspberry),建议保存用户名和密码(下次连的时候方便),就连接上去了。

如果不能成功连接,请检查:1、你的树莓派和电脑是否接入了同一个网络;2、树莓派上的VNC是否成功安装,IP地址、用户名和密码是否正确,串口是否成功开启。

然后你还可以下载XShell、putty之类的软件,也可以进行远程连接,步骤差不多。

5、安装OpenCV

(1)增大可用内存空间

$ sudo raspi-config

树莓派配置OpenCV教程_第13张图片
树莓派配置OpenCV教程_第14张图片
树莓派配置OpenCV教程_第15张图片

然后重启树莓派。

(2)安装CMake、图像和视频库

输入以下命令:

$ sudo apt-get install build-essential cmake git pkg-config
$ sudo apt-get install libjpeg-dev libpng-dev libtiff-dev
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
$ sudo apt-get install libxvidcore-dev libx264-dev
$ sudo apt-get install libgtk-3-dev
$ sudo apt-get install libcanberra-gtk*
$ sudo apt-get -y install libatlas-base-dev gfortran

然后在GitHub上下载OpenCV:

$ cd ~/
$ mkdir opencv
$ cd opencv
$ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.0.0.zip
$ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.0.0.zip

也可以直接在电脑上下载好了,再挪到树莓派里面。

然后解压并修改文件夹名称,如果不修改文件夹名称,记得修改后来的CMake路径:

$ unzip opencv.zip
$ unzip opencv_contrib.zip
$ mv opencv-4.0.0 opencv
$ mv opencv_contrib-4.0.0 opencv_contrib

(3)升级pip(不想用Python的可以跳过):

$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python3 get-pip.py
$ sudo pip install numpy

(4)安装OpenCV

$ cd opencv
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib/modules \
    -D ENABLE_NEON=ON \
    -D ENABLE_VFPV3=ON \
    -D BUILD_TESTS=OFF \
    -D OPENCV_ENABLE_NONFREE=ON \
    -D INSTALL_PYTHON_EXAMPLES=OFF \
    -D CMAKE_SHARED_LINKER_FLAGS='-latomic' \
    -D BUILD_EXAMPLES=OFF ..
$ make -j4

进行漫长的等待。。。等待。。。待。。。

能够正常编译到100%说明编译成功。

嗯,然后你应该会发现并不能编译成功。需要进行以下步骤:

https://pan.baidu.com/s/1xi6_5NuTFiP4SD649FgIJw 提取码:mbsj

将这里面所有.i文件复制到树莓派的opencv_contrib/modules/xfeatures2d/src/路径中。

再拷贝一下下面的文件:

在这里插入图片描述

并修改这个文件里的内容:

在这里插入图片描述

然后应该就能编译成功了orz。如果不能的话,据说?你的树莓派如果不是4G版本的话,需要在编译之前修改/etc/dphys-swapfile文件,将其中的CONF_SWAPSIZE改为2048,编译完了再改回去。(因为我的树莓派是4G的,所以没法试)

接下来就是安装OpenCV:

$ sudo make install
$ sudo ldconfig

然后安装完成,我们来测试一下。

找一个目录,新建一个名称为“Makefile”的文件,然后输入以下内容:

CC = gcc
CXX = g++
CFLAGS = -O3 -Wall
CFLAGS += -I/usr/local/include/opencv4 \
		  -I/usr/local/include \
          -L/usr/local/lib -lopencv_dnn \
          -lopencv_ml \
          -lopencv_objdetect \
          -lopencv_shape \
          -lopencv_stitching \
          -lopencv_superres \
          -lopencv_videostab \
          -lopencv_calib3d \
          -lopencv_features2d \
          -lopencv_highgui \
          -lopencv_videoio \
          -lopencv_imgcodecs \
          -lopencv_video \
          -lopencv_photo \
          -lopencv_imgproc \
		  -lopencv_flann \
		  -lopencv_core\
          -lwiringPi
CFLAGS += -lpthread

all:
	@$(CXX) -o main main.cpp  $(CFLAGS)

clean:
	rm -rf $(EXE1) $(EXE2) $(EXE3) $(EXE4) $(EXE5) $(EXE6) $(EXE7) $(EXE8) $(EXE9) $(EXE10) $(EXE11) $(EXE12) *.o

再新建一个名称为main.cpp的文件,输入以下内容:

#include 
#include 

using namespace cv;
using namespace std;

VideoCapture capture;
Mat srcImage;

int main()
{
     
    capture.open(0); //打开摄像头
    if (!capture.isOpened())//如果视频不能正常打开则返回
    {
     
        cout << "摄像头打开失败!" << endl;
        return -1;
	}
    while (1)
	{
     
        capture >> srcImage;//等价于 capture.read(frame);
        if (srcImage.empty())//如果某帧为空则退出循环
        {
     
            cout << "摄像头断开!" << endl;
            break;
		}
        imshow("video", srcImage);
        waitKey(1);//每帧延时 1 毫秒,如果不延时,图像将无法显示
	}
	return 0;
}

然后进入这个文件夹,在命令行内输入:

$ make
$ ./main

可以看到程序正常运行:

安装完成!

然后如果你不习惯这样写程序,可以安装个QT啊啥的,方便自己写程序。我习惯命令行编译运行程序,就不装软件了。

6、安装中文输入法和一些bug

$ sudo apt-get install ttf-wqy-zenhei
$ sudo apt-get install scim-pinyin
$ sudo raspi-config

树莓派配置OpenCV教程_第16张图片
树莓派配置OpenCV教程_第17张图片
树莓派配置OpenCV教程_第18张图片

前面加*的操作是通过按空格达到的。还需要去掉en_GB.UTF-8 UTF-8 ,勾上“en_US.UTF-8 UTF-8”和“zh_CN.UTF-8 UTF-8”,“zh_CN.GBK GBK”

然后在后面的主要语言中选择“zh_CN UTF-8”。

emmm,我后来发现打开文件管理器会闪退?然后找到一个方法是,执行下这个就好了:

$ sudo apt full-upgrade

你可能感兴趣的:(opencv,raspberry,pi,linux,c++)