初稿完成于2020.6.28
这份教程我觉得还是很全的QAQ是我当初配置的时候一步一步截图下来的(傲娇脸),配置的是OpenCV4.0.0~
大概以后有空还会发点OpenCV的相关东西趴orz
首先,在官网上下载镜像:
https://www.raspberrypi.org/downloads/noobs/
下载最大的那个,嗯(因为软件最多),解压。
然后下载个SDFormatter和Win32DiskImager,图标长这样:
然后拿出你的SD卡和读卡器,先打开SDFormatter,格式化SD卡;然后打开Win32DiskImager,选择下载好的镜像(后缀应该是.img),烧到卡里面。镜像烧录完成。
嗯然后把卡插进树莓派,接上显示器和键盘、鼠标。
由于原本的软件源有很多坑,建议更换为清华软件源,步骤如下:
打开命令行,输入:
$ 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,然后等吧。
由于我们在使用的过程中,需要让树莓派的串口与外部通信,因此,需要配置串口的属性。命令行下输入:
$ sudo raspi-config
依次如下图选择:
然后退出即可,退出的时候先不要重启。
在命令行内输入:
$ sudo nano /boot/config.txt
在文件最后添加两行:
dtoverlay=pi3-miniuart-bt
force_turbo=1
保存退出。然后重启树莓派。
在命令行内输入命令:
$ ls /dev -al
如果得到的串口顺序是这样的,则说明配置成功。
我下载的是2019.7.10版本的镜像,里面是默认带有VNC的,如果你不放心,那就再开启一下:
$ sudo raspi-config
然后用同样的方法把Camera,SSH什么的也开启一下,其它的IIC、SPI等等需要的话也开启一下。
将树莓派接入无线网(比如你的手机热点),然后在命令行内输入:
$ ifconfig
记住这个,它是你的树莓派的IP地址。
然后在你的电脑上下载一个VNC。。。(不需要注册登录,下载就完事了)
在电脑上的VNC的空白处右击,点击new connections
在这里面输入名字和树莓派的IP地址,点击OK
双击连接,中间出现密钥啥的就接受,然后输入用户名和密码(默认是pi和raspberry),建议保存用户名和密码(下次连的时候方便),就连接上去了。
如果不能成功连接,请检查:1、你的树莓派和电脑是否接入了同一个网络;2、树莓派上的VNC是否成功安装,IP地址、用户名和密码是否正确,串口是否成功开启。
然后你还可以下载XShell、putty之类的软件,也可以进行远程连接,步骤差不多。
(1)增大可用内存空间
$ sudo raspi-config
然后重启树莓派。
(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啊啥的,方便自己写程序。我习惯命令行编译运行程序,就不装软件了。
$ sudo apt-get install ttf-wqy-zenhei
$ sudo apt-get install scim-pinyin
$ sudo raspi-config
前面加*的操作是通过按空格达到的。还需要去掉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