ubuntu(16):ubuntu18.04安装opencv2.4.13的报错解决与测试

目录

一、 安装过程

0 查询opencv版本

1 解压创建并进入文件夹

2. 安装配置opencv需要的相关依赖库(部分库可能找不到,但问题可能不大)

3. cmake编译OpenCV源码,安装所有的lib文件都会被安装到"指定目录"下

4  安装

二、cmake过程报错:

2.1 CPACK_PACKAGE_VERSION does not match version provided by version.hpp

2.2 gcc版本引起的问题

2.3 CMake Error at cmake/OpenCVPackaging.cmake:127 (if): if given arguments:   "EQUAL" "5"

三  测试

3.1. 在某个某个新建文件夹下建立一个test.cpp文件,

3.2. 在同一目录下再新建一个cmake的makefile

3.3. 编译+运行

3.4. 找一个jpg格式的图片做测试

3.5.在终端执行以下命令行


 

一、 安装过程

0 查询opencv版本

        opencv3及以下:

pkg-config --modversion opencv

        opencv4

pkg-config --modversion opencv4

1 解压创建并进入文件夹

        将opencv-2.4.13.zip压缩包解压到任一非中文目录下 

        进入解压的文件夹内,并创建release文件夹

cd opencv-2.4.13
mkdir release  

        进入release目录(之后安装OpenCV的所有文件都会先/暂时被放到release文件夹内) 

cd release  

2. 安装配置opencv需要的相关依赖库(部分库可能找不到,但问题可能不大)

    sudo apt-get install build-essential 
    sudo apt-get install cmake 
    sudo apt-get install libgtk2.0-dev 
    sudo apt-get install pkg-config 
    sudo apt-get install python-dev 
    sudo apt-get install python-numpy 
    sudo apt-get install libavcodec-dev 
    sudo apt-get install libavformat-dev 
    sudo apt-get install libswscale-dev 

3. cmake编译OpenCV源码,安装所有的lib文件都会被安装到"指定目录"下

cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local/opencv2.4 .. \
-D ENABLE_PRECOMPILED_HEADERS=OFF ..

        这里将指定目录设置为/usr/local/opencv2.4,稍后会将编译好的opencv2.4.13的库等文件放到改目录下面(指定目录也可以不设置,这样会将本次安装的opencv安装到默认位置---可能会覆盖之前的opencv安装)

4  安装

    make 
#或make -j4  或make -j8  
  sudo make install  

        到此安装完成,以下步骤为测试软件是否可正常运行

二、cmake过程报错:

2.1 CPACK_PACKAGE_VERSION does not match version provided by version.hpp

        这个问题是不能够找到opencv版本,ubuntu16.04自己可以找到,ubuntu18.04找不到,需要标明

CMake Warning at cmake/OpenCVPackaging.cmake:23 (message):
  CPACK_PACKAGE_VERSION does not match version provided by version.hpp
  header!
Call Stack (most recent call first):
  CMakeLists.txt:1108 (include)

        修改/home/meng/Desktop/softwares/opencv-2.4.13.2/CMakeLists.txt:(下面带#meng注释行)

if(GIT_EXECUTABLE)
  execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags --always --dirty --match "2.[0-9].[0-9]*"
    WORKING_DIRECTORY "${OpenCV_SOURCE_DIR}"
    OUTPUT_VARIABLE OPENCV_VCSVERSION
    RESULT_VARIABLE GIT_RESULT
    ERROR_QUIET
    OUTPUT_STRIP_TRAILING_WHITESPACE
  )
  if(NOT GIT_RESULT EQUAL 0)
    #set(OPENCV_VCSVERSION "unknown")
    set(OPENCV_VCSVERSION "2.4.13") #meng
  endif()
else()
  # We don't have git:
  #set(OPENCV_VCSVERSION "unknown")
  set(OPENCV_VCSVERSION "2.4.13") #meng
endif()

        参考了这两篇博客,这两篇分别给了一种解决方案,选择一种即可

        https://blog.csdn.net/csyz2019/article/details/107741843
        https://blog.csdn.net/qq_41598072/article/details/100665769 

2.2 gcc版本引起的问题

        解决办法:替换opencv-2.4.13/cmake/OpenCVDetectCXXCompiler.cmake文件中的dumpversion为dumpfullversion,使编译对gcc版本没有要求

# execute_process(COMMAND ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} -dumpversion #meng
  execute_process(COMMAND ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} -dumpfullversion

:如果找不到 OpenCVDetectCXXCompiler.cmake,可以在整个opencv2.4.13目录中搜索dumpversion,用vscode搜索如下,试着修改其他文件

参考了:https://blog.csdn.net/wowbing2/article/details/105848531

2.3 CMake Error at cmake/OpenCVPackaging.cmake:127 (if): if given arguments:   "EQUAL" "5"

CMake Error at cmake/OpenCVPackaging.cmake:127 (if):
  if given arguments:

    "EQUAL" "5"

  Unknown arguments specified

        报错位置在/home/meng/Desktop/softwares/opencv-2.4.13.2/cmake/OpenCVPackaging.cmake:

看里面的常量,大致意思说明是因为gcc的版本不是5----ubuntu18.04的gcc默认为7.5

set(ABI_VERSION_SUFFIX "")
if(CMAKE_COMPILER_IS_GNUCXX)
  if(${CMAKE_OPENCV_GCC_VERSION_MAJOR} EQUAL 5)
     set(ABI_VERSION_SUFFIX "v5")
  endif()
endif()

可以参考2.2进行修改,下面提供一种新的方法 

        更改gcc、g++版本
(1)下载gcc/g++ 5

sudo apt-get install -y gcc-5
sudo apt-get install -y g++-5

(2)链接gcc/g++实现降级

cd /usr/bin
sudo rm gcc
sudo ln -s gcc-5 gcc
sudo rm g++
sudo ln -s g++-5 g++

这里参考了:https://www.cnblogs.com/ccoming/p/12615556.html

三  测试

3.1. 在某个某个新建文件夹下建立一个test.cpp文件,

        在终端输入以下命令

gedit test.cpp

        在该文档中添加以下内容,保存后关闭文档.

#include <cv.h>  
#include <highgui.h>  
 
using namespace cv;  
 
int main(int argc, char* argv[])  
{  
    Mat image;  
    image = imread(argv[1], 1);  
 
    if (argc != 2 || !image.data)   
    {  
        printf("No image data\n");  
        return -1;  
    }  
 
    namedWindow("Display Image", CV_WINDOW_AUTOSIZE);  
    imshow("Display Image", image);  
    waitKey(0);  
    return 0;  
}

3.2. 在同一目录下再新建一个cmake的makefile

        在终端执行以下命令
 

      gedit CMakeLists.txt

        在该文档中输入以下内容,保存后关闭文档

   project(test)  
   find_package(OpenCV REQUIRED)  
   add_executable(test test)  
   target_link_libraries(test ${OpenCV_LIBS})  
   cmake_minimum_required(VERSION 2.8)

3.3. 编译+运行

        在终端执行以下两条命令

    cmake .  
    make  

        得到可执行文件test(类似于Windows系统下的可执行文件exe)

3.4. 找一个jpg格式的图片做测试

        注意要和上面那个可执行文件test放在同一目录下面,图片名取test.jpg。

        若没有生成可执行文件test,请参考此链接:http://www.cnblogs.com/darkknightzh/p/5638117.html


3.5.在终端执行以下命令行

    ./test   test.jpg  

        如果能看到照片,那就表示成功了。

注:也适用于Xavier NX上测试过

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值