目录
一、 安装过程
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.在终端执行以下命令行
opencv3及以下:
pkg-config --modversion opencv
opencv4
pkg-config --modversion opencv4
将opencv-2.4.13.zip压缩包解压到任一非中文目录下
进入解压的文件夹内,并创建release文件夹
cd opencv-2.4.13
mkdir release
进入release目录(之后安装OpenCV的所有文件都会先/暂时被放到release文件夹内)
cd release
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
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安装)
make
#或make -j4 或make -j8
sudo make install
到此安装完成,以下步骤为测试软件是否可正常运行
这个问题是不能够找到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
解决办法:替换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
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
在终端输入以下命令
gedit test.cpp
在该文档中添加以下内容,保存后关闭文档.
#include
#include
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;
}
在终端执行以下命令
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)
在终端执行以下两条命令
cmake .
make
得到可执行文件test(类似于Windows系统下的可执行文件exe)
注意要和上面那个可执行文件test放在同一目录下面,图片名取test.jpg。
若没有生成可执行文件test,请参考此链接:http://www.cnblogs.com/darkknightzh/p/5638117.html
./test test.jpg
如果能看到照片,那就表示成功了。
注:也适用于Xavier NX上测试过