树莓派4B+4G内存安装OpenCV3.4.3成功。

我是用的是树莓派4B+4G内存,32G内存卡,经过好几天的折腾,终于装上了OpenCV,现在记录一下,也方便小白。(安装并非原创,我是参考悠悠happy的,如果有侵权联系我删除。)

这是他的原文地址https://blog.csdn.net/zqxdsy/article/details/102673226

我第一安装到24%就失败了,然后删除release文件夹,重新编译后安装就可以。然后还有换源很重要,直接关系能不能装成功。因为我用的是2020的官方系统。

【注意】这里的树莓派系统是Raspbian-buster系统,在写系统源链接时要注意是buster,网上很多教程都是之前stretch版本,容易出错!

具体换源参考https://blog.csdn.net/zqxdsy/article/details/102574239

(他文中说了换pip,我没有换这个)

下面就把安装方式搬过来,我比较喜欢的是他用多线程编译,速度比较快,我用了一个小时多一点编译完成,看其他教程要4个多小时。下面换源方式我没有用,我是用上面链接的换。

我的镜像备份出来接近32G,我不知道怎么提取小的出来。


【准备工作】

1.这里我用的是官方Raspbian-buster-full系统,首先要更换源为清华源,避免后面下载gtk2.0失败。

换源方法:https://blog.csdn.net/zqxdsy/article/details/102574239


2. 可以外接屏幕也可以使用VNC远程操作,在编译过程中使用tee命令将编译过程保存下来,可以很方便地进行查看,不用担心远程连接中断的问题,后面会说明,可跳过这里。



【正式安装】

一、安装OpenCV所需要的依赖工具和一些图像视频库。

1.安装构建必需工具

// 安装build-essential、cmake、git和pkg-config

sudo apt-get install build-essential cmake git pkg-config

2.安装常用的图像工具包

// 安装jpeg格式图像工具包

sudo apt-get install libjpeg8-dev

// 安装tif格式图像工具包

sudo apt-get install libtiff5-dev

// 安装JPEG-2000图像工具包

sudo apt-get install libjasper-dev

// 安装png图像工具包

sudo apt-get install libpng12-dev

3.安装视频工具包,最后的是v4l中4后面的是 英文字母“l”

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

4.安装gtk2.0,若下载出错请查看源是否为清华源或中科大源

sudo apt-get install libgtk2.0-dev

5.安装优化函数包

sudo apt-get install libatlas-base-dev gfortran

二、编译OpenCV源码

1.下载opencv3.4.3和opencv_contrib3.4.3(可以选择其他版本,不过二者版本号需一致)

法一:直接下载解压使用

OpenCV源码下载地址(OpenCV源码可直接下载,下面的扩展包最好用wget下载)

OpenCV_contrib下载地址(我是直接下载的,有的说直接下载contrib包后面编译会出错,因此需要使用wget下载contrib,推荐法二使用wget下载方式,避免出错)

法二:使用wget下载OpenCV源码

//** 下载后需要解压到用户目录下

// 下载OpenCV

wget -O opencv-3.4.3.zip https://github.com/Itseez/opencv/archive/3.4.3.zip

// 解压OpenCV

unzip opencv-3.4.3.zip

// 下载OpenCV_contrib库:

wget -O opencv_contrib-3.4.3.zip https://github.com/Itseez/opencv_contrib/archive/3.4.3.zip

// 解压OpenCV_contrib库:

unzip opencv_contrib-3.4.3.zip

2.将下载的源码解压缩,并在终端中进入源码目录

//具体路径请以实际为准

cd ~/opencv-3.4.3

3.新建release文件夹,用来存放cmake编译时产生的临时文件

// 新建release文件夹

mkdir release

// 进入release文件夹

cd release

4.设置cmake编译参数,安装目录默认为/usr/local 。

注意参数名、等号和参数值之间不能有空格,每行末尾“\”之前有空格,这里使用换行符“\”是为了看起来工整,参数值最后是两个英文的点,意思是上级目录(【注意】如果在root用户下执行cmake命令,请将OPENCV_EXTRA_MODULES_PATH的值改为绝对路径,如:/home/pi/opencv_contrib-3.4.3/modules):

/** CMAKE_BUILD_TYPE是编译方式

* CMAKE_INSTALL_PREFIX是安装目录

* OPENCV_EXTRA_MODULES_PATH是加载额外模块

* INSTALL_PYTHON_EXAMPLES是安装官方python例程

* BUILD_EXAMPLES是编译例程(这两个可以不加,不加编译稍微快一点点,想要C语言的例程的话,在最后一行前加参数INSTALL_C_EXAMPLES=ON,要C++例程的话在最后一行前加参数INSTALL_C_EXAMPLES=ONINSTALL_CXX_EXAMPLES=ON)

**/

sudo cmake -D CMAKE_BUILD_TYPE=RELEASE \

-D CMAKE_INSTALL_PREFIX=/usr/local \

    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4.3/modules \

    -D INSTALL_PYTHON_EXAMPLES=ON \

    -D INSTALL_CXX_EXAMPLES=ON \

    -D BUILD_EXAMPLES=ON ..

配置成功后如下图


因为下一步的编译会使用release文件中的东西,假如编译失败后还要重新进行cmake,比较耽误时间,这里可以直接备份一下cmake好的release文件夹,命名为release1,重新make的时候可以拿来用。

//返回上层目录

cd ..

//备份release文件夹

cp -r release ./release1

5.开始编译

/**

* 以管理员身份,否则容易出错

* make命令参数-j4指允许make使用最多4个线程进行编译,这样编译速度会更快

* 可以根据自己机器的情况进行更改

* 使用tee命令可以将编译过程中终端显示的信息保存到make.log文件中,便于查看,这样即使VNC断线,终端的* 信息太多看不到,也可以通过make.log文件查看编译过程。

**/

sudo make -j4 2>&1 | tee make.log

// 安装

sudo make install

// 更新动态链接库

sudo ldconfig

保存make编译信息说明链接

如果看到进度编译到100%,那就说明编译安装成功了。


6.其他配置

这步是为了设置库的路径,相当于windows下的环境变量,便于使用OpenCV库,也可以不进行设置,使用的时候说明路径也可。例如在编译时说明使用库的路径是 -L/usr/local/lib 

(1)配置opencv.conf

打开opencv.conf配置文件 

//这里我使用的是gedit,类似于记事本,树莓派默认的是nano,也可以使用vim,怎么方便怎么用

sudo gedit /etc/ld.so.conf.d/opencv.conf

在末尾添加如下内容

/usr/local/lib

?

注意:?表示一个空格,可能原因是有的语言要求最后有一个空格才可以编译通过。

加载一下

sudo ldconfig

(2)打开bash.bashrc配置文件

sudo gedit /etc/bash.bashrc

 在最后添加如下内容

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig     

export PKG_CONFIG_PATH

 重启树莓派或者点击注销用户重新登录

sudo reboot


7.检测OpenCV使用是否正常

法一:C++程序

//C++程序,使用OpenCV读取一张图片

#include<iostream>

#include<opencv2/opencv.hpp>

using namespace std;

using namespace cv;

int main()

{

Mat src=imread("~/1.jpg");

imshow("src",src);

waitKey(0);

return 0;

}

保存该文件为imshow.cpp,在终端使用下面命令进行编译(若在前面设置了环境,可以不加-L/usr/local/lib)。

g++ imshow.cpp -o imshow -L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_imgcodecs

给编译好的文件添加可执行权限并执行

//添加执行权限

sudo chmod a+x imshow

//执行程序

./imshow

法二:Python程序

安装的Raspbian系统自带Python编译器,若没有安装,执行下列命令进行安装

sudo apt-get install python-dev python3-dev

python程序,使用OpenCV画一条直线

import cv2

import numpy as np

cv2.namedWindow("gray")

img = np.zeros((512,512),np.uint8)#生成一张空的灰度图像

cv2.line(img,(0,0),(511,511),255,5)#绘制一条白色直线

cv2.imshow("gray",img)#显示图像

#循环等待,按q键退出

while True:

key=cv2.waitKey(1)

if key==ord("q"):

break

cv2.destoryWindow("gray")

保存该文件为opencv_test.py,并在终端运行程序

python3 ./opencv_test.py

运行结果如下:


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容