树莓派安装Opencv方法总结,包括各种报错解决方法

树莓派安装Opencv方法总结,包括各种报错解决方法前言:最近因为毕设在树莓派上使用Opencv,因此花了两天时间分别装了opencv-3.4.0版本、opencv-4.0.0版本,期间遇到了各种坑(我感觉遇到了安装过程几乎所有的坑了TT),但最后在网上查找相关问题都一步步解决了,写下这篇博客就是总结一下自己的安装经历以及遇到的坑,以后再次安装就可以直接看自己的博客了哈哈!同时也是希望能够系统的总结一下遇到的坑,可以不用遇到一个问题就去查一次百度。最后希望能够帮助到想用树莓派安装opencv的你!我在安装过程中记录了出现的错误,本文较长,可针对目录进行选

前言:最近因为毕设在树莓派上使用Opencv,因此花了两天时间分别装了opencv-3.4.0版本、opencv-4.0.0版本,期间遇到了各种坑(我感觉遇到了安装过程几乎所有的坑了T T),但最后在网上查找相关问题都一步步解决了,写下这篇博客就是总结一下自己的安装经历以及遇到的坑,以后再次安装就可以直接看自己的博客了哈哈!同时也是希望能够系统的总结一下遇到的坑,可以不用遇到一个问题就去查一次百度。最后希望能够帮助到想用树莓派安装opencv的你!

我在安装过程中记录了出现的错误,本文较长,可针对目录进行选择性查阅,不过安装的话还是建议耐心的看一下。

注:文章已经总结了较多易出现的报错问题,也可以参考评论区方法,如需要帮助评论区留言,祝成功!

卸载opencv

为什么先说卸载opencv呢?因为大家都说 opencv 从入门到卸载嘻嘻,开个玩笑,因为很有可能安装的版本错误啊等等各种问题导致你要重新安装!

  • 查看已安装的opencv版本

    • pkg-config --modversion opencv
  • 卸载

    • 方法1:找到安装opencv的build目录,进入该目录进行卸载。比如我安装在/home/pi/Downloads/opencv-4.0.0/build

      cd /home/pi/Downloads/opencv-4.0.0/build
      sudo make uninstall
      cd  ..
      rm -r build
      
    • 方法2:不知道安装目录在哪,则可以重新建立build目录安装对应版本,然后再执行上边卸载步骤。然后清理/usr中所有opencv相关项

      rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*  
      cd /usr  
      find . -name "*opencv*" | xargs sudo rm -rf  
      
  • 移除python相关

  • apt-get remove-doc opencv-data python-opencv

安装opencv

安装前环境准备

安装树莓派系统

  1. 去官网下载系统镜像,链接贴上:Raspberry Pi OS Downloads
    下载如下带桌面的Raspberry Pi OS就可以。
    在这里插入图片描述
    下载完成之后解压,注意路径中不能有中文字符,避免在使用镜像写入工具时出错。

  2. 格式化内存卡
    准备一个16GB或者以上的内存卡,在我的电脑右键–管理–磁盘管理,查看是否只有一个分区,应该是只有一个分区,且为FAT32.

  3. 写入镜像文件
    将 .img 镜像文件写入 SD卡,可以使用 Win32 Disk Imager,下载链接:Win32 Disk Imager下载
    运行Win32 Disk Imager之后,选择我们下载解压后的img镜像,设备选择TF卡,点击写入,确定,等待写入完成即可。
    在这里插入图片描述

4.将SD插入树莓派(最好配个显示屏)上电后系统即会开始安装系统,进行简单设置后即可开始使用。

拓展树莓派的文件系统

  1. 在树莓派终端(或者SSH)上输入:$ sudo raspi-config

  2. 然后选择“高级选项”菜单项,选择第7个
    在这里插入图片描述

  3. 然后选择“扩展文件系统”
    在这里插入图片描述
    选择第一个回车,会让你重启树莓派,选择立即重启

    注:如果不能重启,则输入sudo reboot重启

  4. 重新启动后,文件系统已经扩展为包括micro-SD卡上的所有空间。可以通过执行df -h 检查输出来验证磁盘是否已扩展。
    在这里插入图片描述

    已经释放掉所有内存 容量变成15G!Over!

更换树莓派源为国内镜像源

更换镜像源主要就是为了解决树莓派每次下载都要“远隔重洋”去获取资源时的“龟速”问题

  1. 在树莓派的命令行界面输入sudo nano /etc/apt/sources.list使用nano编辑器编辑source.list

  2. 使用键盘方向键控制,在第一行开头加一个#,把下面的内容拷贝到最后一行之后

    清华镜像源

    注:网址末尾的raspbian重复两次是必须的。因为 Raspbian 的仓库中除了APT软件源还包含其他代码。APT软件源不在仓库的根目录,而在raspbian/子目录下。

    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
    

    中科大镜像源

    deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
    deb-src http://mirrors.ustc.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
    
  3. 先按键盘上的ctrl+o,再按回车保存,再按ctrl+x退出 nano 编辑器回到命令行界面。再输入sudo apt-get update命令更新到清华大学/中国科技大学镜像源最新的软件列表。

  4. 今后在树莓派命令行中执行sudo apt-get install 软件名时便会自动从清华/中科大开源软件镜像站高速下载

  5. 最好再重启一下树莓派sudo reboot

也可以参考该博文:树莓派换镜像源 清华大学镜像源教程

给树莓派增加交换空间SWAP

在开始编译前,建议你增加交换空间。这将使你使用树莓派的所有四个内核来编译OpenCV,而不会由于内存耗尽导致编译挂起。

  1. 输入sudo nano /etc/dphys-swapfile打开 / etc / dphys – swapfile文件

  2. 然后编辑 CONF_SWAPSIZE 变量为2048或1024:
    在这里插入图片描述

  3. 重新启动交换服务

    sudo /etc/init.d/dphys-swapfile stop
    sudo /etc/init.d/dphys-swapfile start
    

注意:增加交换空间的大小可能烧坏树莓派 microSD卡,因此在我们后续编译完成之后就再改回CONF_SWAPSIZE

正式安装

更新系统

输入sudo apt-get update && sudo apt-get upgrade更新系统

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

  1. 安装CMake开发人员工具

    输入如下命令安装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. 安装常用视频库:使我们从磁盘读取各种视频文件格式,以及直接使用视频流

    • sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
      sudo apt-get install libxvidcore-dev libx264-dev
      
  4. 安装GTK2.0

    • sudo apt-get install libgtk2.0-dev
      
  5. 安装数值函数优化包

    • sudo apt-get install libatlas-base-dev gfortran
      
  6. 装Python 2.7和Python 3头文件,这样我们就可以使用Python绑定编译OpenCV

    • sudo apt-get install python2.7-dev python3-dev
      

下载opencv源码

我下载的是opencv4.0.0版本,选择其他版本也可以,直接按照网站去下载源代码

  • 下载Opencv-4.0.0

    方法1:树莓派终端输入命令

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

    方法2:电脑上进入该网页https://github.com/Itseez/opencv/archive/4.0.0.zip下载后通过U盘拷贝到树莓派

  • 下载OpenCV_contrib-4.0.0

    方法1:树莓派终端输入命令 wget -O opencv_contrib-4.0.0.zip https://github.com/Itseez/opencv_contrib/archive/4.0.0.zip

    方法2:电脑上进入该网页https://github.com/Itseez/opencv_contrib/archive/4.0.0.zip下载后通过U盘拷贝到树莓派

  • 解压Opencv-4.0.0和OpenCV_contrib-4.0.0

    unzip opencv-4.0.0.zip
    unzip opencv_contrib-4.0.0.zip
    

配置CMake编译OPencv环境

使用CMake设置编译,然后运行 make 来编译OpenCV。这是整个过程中耗时最长的步骤,大约4个小时。回到OpenCV存储库并创建 build 文件夹,用来存放 CMake 编译时产生的临时文件。

  1. 进入opencv安装目录 注:我这里将解压Opencv-4.0.0和OpenCV_contrib-4.0.0在了/home/pi/opencv目录下

    • cd /home/pi/opencv/opencv-4.0.0
      
  2. 新建 build 文件夹,存放 CMake 编译时产生的临时文件

    • mkdir build
      
  3. 进入 build 文件夹

    • cd ./build
      

设置CMake编译参数,安装目录默认为 /usr/local

首先进入build 文件夹cd /home/pi/opencv/opencv-4.0.0/build

注意参数名、等号和参数值之间不能有空格,每行末尾“\”之前有空格,这里使用换行符“\”是为了看起来工整,参数值最后是两个英文的点

注:如果在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 是编译例程
  • OPENCV_GENERATE_PKGCONFIG : 自动配置pkg-config , 因为OpenCV 4 配置默认不产生 opencv4.pc
sudo cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D OPENCV_EXTRA_MODULES_PATH=/home/pi/opencv/opencv_contrib-4.0.0/modules \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D INSTALL_CXX_EXAMPLES=ON \
	-D OPENCV_GENERATE_PKGCONFIG=ON \
    -D BUILD_EXAMPLES=ON ..

注:想要C语言的例程的话,在最后一行前加参数INSTALL_C_EXAMPLES=ON

注:OPENCV_GENERATE_PKGCONFIG=ON建议一定要加上,博主因为当时没加这个在opencv.pc这块绕了半天,官方解释如下:

Add this flag when running CMake: -DOPENCV_GENERATE_PKGCONFIG=ON Will generate the .pc file for pkg-config and install it. Useful if not using CMake in projects that use OpenCV Installed as opencv4, usage: pkg-config --cflags --libs opencv4

帮大家翻译下 ^ ^:

当运行CMake: -DOPENCV_GENERATE_PKGCONFIG=ON时添加这个标志将生成pkg-config的.pc文件并安装它。如果在使用OpenCV作为opencv4安装的项目中没有使用CMake,则使用"pkg-config——cflags——libs opencv4"

配置完成后如下:

在这里插入图片描述

完成后我们备份一下build文件夹:

cd ..
cp -r build ./build1

编译OpenCV

  1. 编译

    输入命令sudo make -j4 2>&1 | tee make.log开始编译

    注意:

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

    ​ make命令参数-j4指允许make使用最多4个线程进行编译,这样编译速度会更快!但是如果没有增加交换空间的话就老老实实只用make

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

    如果有幸一次就看到进度编译到100%,那么恭喜你是天选之子,说明编译安装成功。如果没有的话,那也很正常,文章末尾总结了许多可能出现的问题。

在这里插入图片描述

  1. 安装

    输入sudo make install开始安装
    在这里插入图片描述

  2. 更新动态链接库

    输入sudo ldconfig 注意:是 L 的小写 l 而不是 i 的大写哦

!!!!这个时候你是不是忘记了什么事情?

对! 不要忘记回到 /etc/dphys-swapfile 文件并将 CONF_SWAPSIZE 重置为 100,然后重新启动交换服务

sudo nano /etc/dphys-swapfile

修改CONF_SWAPSIZE=100

重启交换服务

sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start

安装就结束了,可以删除之前的源代码包,释放空间

rm -rf opencv-4.1.0 opencv_contrib-4.1.0

配置Opencv

配置opencv.conf

输入命令打开opencv.conf配置文件

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

在文件末尾加入如下内容,并保存推出

 /usr/local/lib
 ?

如图所示:
在这里插入图片描述

输入如下命令,更新下ldconfig

sudo ldconfig

bash.bashrc 配置文件

输入命令sudo nano /etc/bash.bashrc打开bash.bashrc配置文件

在最后添加如下内容:(后面会讲pkgconfig和PKG_CONFIG_PATH是什么

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

在这里插入图片描述

保存退出后输入命令sudo reboot重启树莓派

我们可以通过下面命令来查看已添加的PKG_CONFIG_PATH环境变量:

echo $PKG_CONFIG_PATH

实例测试

我们安装 cmake gui,使用图形界面会比较方便些

sudo apt-get install cmake-gui

创建文件名为 Thresholds.cpp 并编写 opencv 的代码,代码如下:

#include<opencv2/opencv.hpp>
#include<opencv2/highgui.hpp>
#include<iostream>

using namespace std;
using namespace cv;

int Threshold_size = 127;
int Threshold_max = 255;
int Thres_type = 0;
int Type_max = 4;
Mat src,dst,gray;

void Threshold_Demo(int , void *);

int main(int argc,char** argv)
{ 
   
    src = imread("/home/pi/opencv/projectTest/abc.jpg",IMREAD_COLOR);
    if(!src.data)
    { 
   
        cout<<"img load error..."<<endl;
        return -1;
    }
    namedWindow("src1",WINDOW_NORMAL);
    resizeWindow("src1",400,500);
    imshow("src1",src);
    namedWindow("out",WINDOW_NORMAL);
    resizeWindow("out",400,500);
    cvtColor(src,gray,COLOR_BGR2GRAY);
    /* threshold(gray,dst,0,255,THRESH_OTSU);//THRESH_OTSU: 自动设定合适阈值 imshow("out",dst); */
    createTrackbar("thresh_size","out",&Threshold_size,Threshold_max,Threshold_Demo);
    createTrackbar("threshold_type","out",&Thres_type,Type_max,Threshold_Demo);
    Threshold_Demo(0,0);

    waitKey(0);
    return 0;
}

/* THRESH_BINARY : 0 THRESH_BINARY_INV : 1 THRESH_TRUNC : 2 THRESH_TOZERO : 3 THRESH_TOZERO_INV : 4 */

void Threshold_Demo(int , void *)
{ 
   
    threshold(gray,dst,Threshold_size,Threshold_max,Thres_type);
    imshow("out",dst);
}

图片 abc.jpg
在这里插入图片描述

将 .cpp 文件以及图片 abc.jpg 一并放在/home/pi/opencv/projectTest/abc.jpg 目录下.

在刚刚的projectTest文件夹里新建一个.txt文件,取名为CMakeLists.txt。CMakeLists的内容可以到Opencv的安装目录中找到Opencv官方的例子中直接复制过来就可以,不过需要改几个地方。(注意:CMakeLists.txt不是CmakeLists.txt,否则报错,之前看一个博主可能写错了写的CmakeLists.txt)

# cmake needs this line
cmake_minimum_required(VERSION 2.8)

# Define project name
project(opencv_example_project)

# Find OpenCV, you may need to set OpenCV_DIR variable
# to the absolute path to the directory containing OpenCVConfig.cmake file
# via the command line or GUI
find_package(OpenCV REQUIRED)

# If the package has been found, several variables will
# be set, you can find the full list with descriptions
# in the OpenCVConfig.cmake file.
# Print some message showing some of them
message(STATUS "OpenCV library status:")
message(STATUS " version: ${OpenCV_VERSION}")
message(STATUS " libraries: ${OpenCV_LIBS}")
message(STATUS " include path: ${OpenCV_INCLUDE_DIRS}")

if(CMAKE_VERSION VERSION_LESS "2.8.11")
  # Add OpenCV headers location to your include paths
  include_directories(${ 
   OpenCV_INCLUDE_DIRS})
endif()

# Declare the executable target built from your sources
add_executable(opencv_example opencvtest.cpp)

# Link your application with OpenCV libraries
target_link_libraries(opencv_example ${ 
   OpenCV_LIBS})

add_executable中的opencvtest.cpp文件改成自己写的代码的文件名,这样才可以知道编译的是哪个文件。

使用cmake-gui编译

cmake-gui

打开cmake-gui后看到界面,源代码处我们选择刚刚创建的文件夹,二进制文件一样也选择刚刚创建的文件夹,点击Add Entry,输入Opencv的安装位置,选择build文件夹。如图所示:

在这里插入图片描述

接着分别点击Configure和Generate,显示Configure Done和Generate Done就说明成功。

回到终端,cd进入刚刚的文件夹,输入ls查看生成了可执行文件 opencv_example

输入./opencv_example后程序运行效果如图所示:
在这里插入图片描述
树莓派安装Opencv方法总结,包括各种报错解决方法

程序效果为拖动 TrackBar 来改变设定阈值Thresh_size以及黑白二值化类型threshold_type,从而改变图像处理结果。

问题汇总

树莓派安装软件,有时候会出现 “下列软件包有未满足的依赖关系:… 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系”

解决方法:

​ 安装aptitude,它能智能添加依赖文件

sudo apt-get install aptitude

​ 然后使用aptitude安装相关软件

sudo aptitude install 软件名

注意:在使用该命令sudo aptitude install 软件名时需要注意,在最开始出现选择Y/n/q/?时要选择‘n’。这样才是降级安装。不然还是会安装失败。之后就可以一路选‘Y’了。

遇到想用 aptitude 解决依赖包问题,但是使用 apt-get 安装 aptitude 时出现依赖包错误

针对上述问题,你想用aptitude 解决依赖关系,但是偏偏执行sudo apt-get install aptitude命令时又出现依赖包错误
在这里插入图片描述

问题原因:

​ 树莓派版本和镜像源不对应!相关信息如下:
在这里插入图片描述
解决方法:

​ 使用命令lsb_release -a查看当前树莓派系统版本,具体信息如下,此版本的代号为 “buster

pi@raspberrypi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID:	Raspbian
Description:	Raspbian GNU/Linux 10 (buster)
Release:	10
Codename:	buster

然后去看了一下使用镜像源的地址,使用的版本代号为 “stretch

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

那么把对应的 “stretch” 改为“buster”就行了

fatal error: /opencv2/xfeatures2d/cuda.hpp: No such file or directory 类问题

这个是我在装opencv-3.4.0版本的时候遇到的问题,解决方法也是参考了一位博主的分享,在此感谢!

问题如下:

/usr/local/arm/opencv-3.4.0/opencv_contrib-3.4.0/modules/xfeatures2d/include/opencv2/xfeatures2d.hpp:42:10: 
fatal error: /opencv2/xfeatures2d.hpp: No such file or directory
 #include "/opencv2/xfeatures2d.hpp"
          ^~~~~~~~~~~~~~~~~~~~~~~~~~

根据给的路径找到xfeature2d.hpp的文件并打开,找到” #include”/opencv2/xfeatures2d.hpp “如下:

40 #ifndef __OPENCV_XFEATURES2D_HPP__
41 #define __OPENCV_XFEATURES2D_HPP__
 
42 #include"/opencv2/xfeatures2d.hpp"

将其改为绝对路径

40 #ifndef __OPENCV_XFEATURES2D_HPP__
41 #define __OPENCV_XFEATURES2D_HPP__
 
42#include"home/pi/opencv/opencv_contrib3.4.0/modules/xfeatures2d/include/opencv2/xfeatures2d.hpp"

提示缺少boostdesc_bgm.i 等文件的问题解决方案

报错如下:

/home/pi/opencv/opencv_contrib-4.0.0/modules/xfeatures2d/src/boostdesc.cpp fatal error: boostdesc_bgm.i没有那个文件或目录

解决方法:

在网上查找一番后,发现网上大都给出了解决方案,无非就是将以下文件:

boostdesc_bgm_bi.i
boostdesc_bgm_hd.i
boostdesc_lbgm.i
boostdesc_binboost_064.i
boostdesc_binboost_128.i
boostdesc_binboost_256.i
vgg_generated_120.i
vgg_generated_64.i
vgg_generated_80.i
vgg_generated_48.i
...

通过U盘拷贝到***opencv_contrib/modules/xfeatures2d/src/***目录下

附上百度云链接:https://pan.baidu.com/s/1BeYF8kqEZLAJYQj-MvxpmA

提取码:e1wc

解决 sudo ldconfig /sbin/ldconfig.real: xxx 不是符号连接 问题

有可能是在同一个目录下有两个重名(.so前面部分相同)的 .so 动态链接库,例如:

/usr/lib/libtest.so
/usr/lib/libtest.so.xxx

解决方法:

找个这两个库文件,删掉其中一个即可

fatal error: features2d/test/test_detectors_regression.impl.hpp: No such file or directory

原因是没找到这个文件

解决方法如下:

将/home/pi/opencv/opencv-4.0.0/ modules / features2d复制,然后粘贴到/home/pi/opencv/opencv-4.0.0/build目录中来解决该问题

Package opencv was not found in the pkg-config search path.问题

执行 pkg-config 时报错,如下:

ackage opencv was not found in the pkg-config search path. 
Perhaps you should add the directory containing `opencv.pc' to the PKG_CONFIG_PATH environment variable

意思是在 PKG_CONFIG_PATH 环境变量中没有找到 opencv 的配置文件 ‘opencv.pc’,即 opencv 不在 pkg-config 的搜索路径,那什么是 pkg-config?什么是 PKG_CONFIG_PATH

pkg-config:

pkg-config 就是通过库提供的一个 .pc 文件获得库的各种必要信息的,包括版本信息、编译和连接需要的参数等。通过 pkg-config 提供的参数–cflags, –libs,将所需信息提取出来供编译和连接使用。这样,不管库文件安装在哪,通过库对应的 .pc 文件就可以准确定位。

PKG_CONFIG_PATH

pkg-config 默认会搜索 /usr/lib/pkgconfig/usr/share/pkgconfig下的 .pc配置文件,若我们源码编译的库的路径不在 pkg-config 的默认搜索路径下,则可以通过环境变量 PKG_CONFIG_PATH 将自定义的路径添加到 pkg-config 的搜索路径。

export PKG_CONFIG_PATH = /your/path:$PKG_CONFIG_PATH

通过下面命令来查看已添加的环境变量:

echo $PKG_CONFIG_PATH

配置opencv.pc文件

如果在 /usr/local/lib/pkgconfig 路径下没有opencv.pc文件,那我们就创建一个,有的话就进行修改。

没有opencv.pc文件就执行以下命令:

cd /usr/local/lib 
sudo mkdir pkgconfig && cd pkgconfig
sudo nano opencv.pc
# 在 opencv.pc 文件里添加如下内容
prefix=/usr/local 
exec_prefix=${prefix} 
includedir=~/local/include 
libdir=~/local/lib  

Name: OpenCV 
Description: Open Source Computer Vision Library 
Version: 4.0.0 
Libs: -L${exec_prefix}/lib -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dpm -lopencv_face -lopencv_photo -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_optflow -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_xfeatures2d -lopencv_shape -lopencv_video -lopencv_ml -lopencv_ximgproc -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_flann -lopencv_xobjdetect -lopencv_imgcodecs -lopencv_objdetect -lopencv_xphoto -lopencv_imgproc -lopencv_core 
Libs.private: -ldl -lm -lpthread -lrt 
Cflags: -I${includedir}

树莓派编译过程死机/卡死 如99%在cv2.cpp.0处

树莓派编译过程死机问题:

一种可能是没有在编译前增加交换空间CONF_SWAPSIZE=2048

另外一种就是很玄学,在编译的时候使用sudo make -j4命令会卡在99%,改为sudo make单线程编译解决了问题,不过时间会长一些。特别是在编译 cv2.cpp.0 和cv3时,我一度以为又卡死了,差一点终止了,所以在单线程 make 时要有耐心!

可以参考这篇博文:https://blog.csdn.net/lionwerson/article/details/105893952

fatal error: stdlib.h: 没有那个文件或目录 #include_next <stdlib.h>

cmake时加上参数-D ENABLE_PRECOMPILED_HEADERS=OFF

[ 76%] Linking CXX shared library …/…/lib/libopencv_ximgproc.so [ 76%] Built target opencv_ximgproc make: *** [Makefile:163:all] 错误 2

可以参考 https://stackoverflow.com/questions/26902541/opencv-compile-error-linking-cxx-shared-library-lib-libopencv-highgui-so

import cv2 报错 no modul name cv2 可参考

http://www.manongjc.com/article/26926.html

其他技术博文

修改树莓派交换分区 SWAP 的正确方法:https://shumeipai.nxez.com/2017/12/18/how-to-modify-raspberry-pi-swap-partition.html

Ubuntu 16.04 OpenCV 源码安装、自定义环境变量 PKG_CONFIG_PATH:https://zhuanlan.zhihu.com/p/85959787?from_voters_page=true

今天的文章树莓派安装Opencv方法总结,包括各种报错解决方法分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/27112.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注