• 树莓派4B安装opencv(python + C++)


    原文链接:https://blog.csdn.net/weixin_46032860/article/details/117425830

    一、安装依赖

    sudo apt-get install build-essential cmake git unzip pkg-config
    sudo apt-get install libjpeg-dev libpng-dev libtiff-dev
    sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev
    sudo apt-get install libgtk2.0-dev libcanberra-gtk*
    sudo apt-get install libxvidcore-dev libx264-dev libgtk-3-dev
    sudo apt-get install python3-dev python3-numpy python3-pip
    sudo apt-get install python-dev python-numpy
    sudo apt-get install libtbb2 libtbb-dev libdc1394-22-dev
    sudo apt-get install libv4l-dev v4l-utils
    sudo apt-get install libjasper-dev libopenblas-dev libatlas-base-dev libblas-dev
    sudo apt-get install liblapack-dev gfortran
    sudo apt-get install gcc-arm*
    sudo apt-get install protobuf-compiler

    提示是否需要继续就一直y就可以,这13个包下载完大概需要30分钟

    三、获取源码Opencv和第三方库
    安装完依赖后,下载OpenCV,这里需要下载两个,一个是OpenCV另一个是第三方库,解压。

    下载我是用的WinSCP,连接后SSH上传,源码下载有时候因为网络的限制会下载不全。

    #下载源码和第三方库
    cd ~
    wget -O opencv.zip https://github.com/opencv/opencv/archive/4.2.0.zip
    wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.2.0.zip
    
    #解压
    unzip opencv.zip
    unzip opencv_contrib.zip

    对解压的文件进行重命名:

    mv opencv-4.2.0 opencv
    mv opencv_contrib-4.2.0 opencv_contrib
    

    解压完后记得还需要一个步骤添加缺失的11个文件,不然会报错。
    下载后,直接拷贝源码并生存同名文件,放在 opencv_contrib/modules/xfeatures2d/src/ 路径下即可。

    #错误提示
    ~/opencv_contrib/modules/xfeatures2d/src/boostdesc.cpp:673:20: fatal error: boostdesc_bgm.i: No such file or directory

    下载链接: [boostdesc_bgm.i,vgg_generated_48.i等.rar] 1(https://files.cnblogs.com/files/arxive/boostdesc_bgm.i%2Cvgg_generated_48.i%E7%AD%89.rar)


    四、创建虚拟环境
    安装之前首先要确定python版本,在2020年以后官方不在对python2进行支持,所以要使用python3,将python的添加到系统环境变量处,方式如下:

    # get version
    python3 --version
    
    # get location
    which python3
    
    # merge VIRTUALENVWRAPPER_PYTHON=location/version
    echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.bashrc
    
    # reload profile
    source ~/.bashrc

    上面的python命令为/usr/bin/python3,也是其路径。创建好环境变量,安装虚拟环境:

    #安装虚拟环境

    sudo pip3 install virtualenv
    sudo pip3 install virtualenvwrapper
    

    #将虚拟环境添加到系统变量。然后创建虚拟环境。

    echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.bashrc
    echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc
    source ~/.bashrc
    mkvirtualenv cv420
    

    在虚拟环境中,Python与OpenCV只有一个依赖项,那就是Numpy。在虚拟环境也要进行安装,否则CMake无法编译。

    # without sudo!!!!
    pip3 install numpy
    


    在opencv文件夹处新建一个build文件夹。

    cd ~/opencv/
    mkdir build
    cd build
    

    构建cmake参数。-D flag -D后面有一个空格:

    cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
    -D ENABLE_NEON=ON \
    -D ENABLE_VFPV3=ON \
    -D WITH_OPENMP=ON \
    -D BUILD_TIFF=ON \
    -D WITH_FFMPEG=ON \
    -D WITH_GSTREAMER=ON \
    -D WITH_TBB=ON \
    -D BUILD_TBB=ON \
    -D BUILD_TESTS=OFF \
    -D WITH_EIGEN=OFF \
    -D WITH_V4L=ON \
    -D WITH_LIBV4L=ON \
    -D WITH_VTK=OFF \
    -D OPENCV_EXTRA_EXE_LINKER_FLAGS=-latomic \
    -D OPENCV_ENABLE_NONFREE=ON \
    -D INSTALL_C_EXAMPLES=OFF \
    -D INSTALL_PYTHON_EXAMPLES=OFF \
    -D BUILD_NEW_PYTHON_SUPPORT=ON \
    -D BUILD_opencv_python3=TRUE \
    -D OPENCV_GENERATE_PKGCONFIG=ON \
    -D BUILD_EXAMPLES=OFF ..
    

    如果以上都配置正常,并且可以正常打印出一下内容,说明配置成功,这里还要着重检测下下面的内容,包括 v4l/v4l2是否可用,还有python的位置是否正确。


    在进行make之前,还要确保内存足够,不然会产生内存不足的问题,解决的方式是增加swap虚拟内存。将swap改为2G内存。操作如下图:
    先查看一下自己的服务器swap大小,命令:

    free -h
    

    可以看到swap大小

    使用 cd /user 进入/urs文件夹,新建一个名叫swap的文件夹

    cd /usr/
    mkdir swap

    下一步使用 cd /swap 进入swap文件夹,创建swap文件
    创建swap文件命令,扩容2G,count就是20:
    这条命令从硬盘里分出一个100M ×20 = 2G 大小的空间,挂在swapfile上

    dd if=/dev/zero of=swapfile bs=100M count=20


    注意:这里我们bs(buff size)给的100M, bs大小可以根据free -h命令查看的buff/cache的大小来决定,如果给大了可能会报dd: memory exhausted by input buffer of size 1073741824 bytes (1.0 GiB)

    swapfile文件创建后,需要构建swap格式于/usr/swap/swapfile 上

    mkswap /usr/swap/swapfile

    用命令激活swap,立即启用交换分区文件

    swapon /usr/swap/swapfile


    但是这样的设置重启后就失效了,为了保证每次启动都能启用该交换空间,需要手动编辑文件/etc/fstab中的swap行

    vim /etc/fstab

    将/swap none swap sw 0 0 这行注释掉(如果有)
    新增一行 /usr/swap/swapfile swap swap defaults 0 0

    命令:

    free -h

    可以看到swap大小变为2G,这里建议可以重启一下,reboot

    五、编译
    一切准备就绪,然后开始进行make,命令如下:
    记得重新进入虚拟环境(还可以用screen命令,自行了解)
    算了我还是说一下,自己后续回顾也方便

    创建会话(-m 强制):
    screen -dmS session_name
    查看所有会话:
    screen -ls
    退出 ctrl +a 快速z 快速跳出
    进入会话 screen -r 2360


    mkvirtualenv cv420
    #在opencv目录下的build目录下执行
    cd /opencv/bulid
    make -j4

    这是一个漫长的过程,大概需要1个小时5分钟
    当然编译过程中还会出现错误,一般错误都是编译器编译时不协调进行出的错误,出现后直接在进行make就可以了。当然还有可能在编译到99%或者100%出现错误,这个要进行稍微检测下,或者在接着make。
    ————————————————
    版权声明:本文为CSDN博主「苦瓜不会码代码」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/weixin_46032860/article/details/117425830

    测试:

    cd opencv/sample/cpp/example_cmake
    cmake .
    make
    ./opencv_example

    结果

    该过程遇到的问题及解决办法

    一、关于pip3找不到命令

    解决方法:

    sudo apt-get remove python3-pip
    sudo apt-get install python3-pip

    二、关于vim无法更改只读文件

    解决方法:

    保存时用命令:w ! sudo tee %

         w: 表示保存文件

        !: 表示执行外部命令

         tee: linux命令,这个有点复杂,可以查看linux命令帮助

         %: 在执行外部命令时,%会扩展成当前文件名;这个%区别于替换时的%,替换时%的意义是代表整个文件,而不是文件名

  • 相关阅读:
    [NSURL initFileURLWithPath:]: nil string parameter 错误的解决方案
    Parser Error Message: Could not load type 错误原因
    C# DropDownList做友情链接打开新窗口
    前两天去A公司面试,面试管问的题目一下子闷了。很郁闷。重新答题。在这里分享一下
    获取枚举描述信息(Description)
    生成实体层的界面(webForm1.aspx)代码
    java中Filter 技术
    hdu_1332&poj_1102_LCDisplay
    hdu_1997_汉诺塔VII
    hdu_1134_Game of Connections_卡特兰数列
  • 原文地址:https://www.cnblogs.com/zhongllmm/p/15935607.html
Copyright © 2020-2023  润新知