opencv:centos7中安装opencv4.3.0环境 - Go语言中文社区

opencv:centos7中安装opencv4.3.0环境


准备

安装依赖

sudo yum -y install epel-release			# 安装epel扩展源
sudo yum -y install git gcc gcc-c++ cmake3
sudo yum -y install qt5-qtbase-devel
sudo yum install -y python34 python34-devel python34-pip
sudo yum install -y python python-devel python-pip
sudo yum -y install python-devel numpy python34-numpy
sudo yum -y install gtk2-devel
sudo yum install -y libpng-devel
sudo yum install -y jasper-devel
sudo yum install -y openexr-devel
sudo yum install -y libwebp-devel
sudo yum -y install libjpeg-turbo-devel 
sudo yum install -y freeglut-devel mesa-libGL mesa-libGL-devel
sudo yum -y install libtiff-devel 
sudo yum -y install libdc1394-devel
sudo yum -y install tbb-devel eigen3-devel
sudo yum -y install boost boost-thread boost-devel
sudo yum -y install libv4l-devel
sudo yum -y install gstreamer-plugins-base-devel
sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
yum -y install ffmpeg ffmpeg-devel	# 安装ffmpeg依赖【必须】

下载最新的OpenCV

这个很慢,可以源码下载,然后编译安装

git clone https://github.com/opencv/opencv.git
cd opencv
git checkout master			# 选择master版本分支
cd ..
git clone https://github.com/opencv/opencv_contrib.git
cd opencv_contrib
git checkout master			# 选择master版本分支
cd ..

在这里插入图片描述

编译安装OpenCV

cd opencv-4.3.0/
mkdir build
cd build

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local  -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules/ -D WITH_TBB=OFF  -D WITH_CUDA=OFF -D BUILD_opencv_gpu=OFF -D BUILD_opencv_gpuarithm=OFF -D OPENCV_GENERATE_PKGCONFIG=ON .. 

# 生成静态库
# cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local  -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTS=OFF -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules/ -D WITH_TBB=OFF  -D WITH_CUDA=OFF -D BUILD_opencv_gpu=OFF -D BUILD_opencv_gpuarithm=OFF -D OPENCV_GENERATE_PKGCONFIG=ON .. 

make -j$(nproc)			#有几个CPU就用几个CPU
make install

cmake编译选项(ON是开(机)的意思; OFF是关(机)的意思)

  • -D CMAKE_BUILD_TYPE=RELEASE

    • 编译模式,release/debug, 默认为release
  • -D CMAKE_INSTALL_PREFIX=/usr/local

    • 安装路径
  • -D WITH_TBB=ON #Include Intel TBB support

    • (Intel开发的并行编程开发工具),默认为off
  • -D BUILD_TIFF=ON

  • Build libtiff from source(一种灵活的位图格式),默认为ON
  • -D WITH_V4L=ON
  • 支持Vedio4Linux(是Linux中关于视频设备的内核驱动,为针对视频设备的应用视频设备的应用程序提供一系列接口函数,这些视频设备包括TV卡、视频捕捉卡和USB摄像头等,对于USB摄像头,其驱动程序中需要提供基本的I/O操作用于open、read、write、close函数的实现),默认为ON
  • -D INSTALL_C_EXAMPLES=ON
  • Install C examples, 默认为off
  • -D INSTALL_PYTHON_EXAMPLES=ON
  • Install Python examples, 默认为off
  • -D BUILD_EXAMPLES=ON
  • Build all examples, 默认为off
  • -D WITH_QT=ON

/ #支持QT(c++图像用户界面开发框架,多用于开发GUI),默认为off

  • -D WITH_GTK=ON
  • 支持跨平台通用图形工具包GTK, 默认为on
  • -D WITH_OPENGL=ON
  • 支持开放图形库OpenGL,默认为off …
  • -D OPENCV_GENERATE_PKGCONFIG=ON
  • Linux下我们使用opencv,需要使用pkg-config来进行环境变量的管理,这个软件需要.pc类型的文件作为软件配置信息
    生成opencv.pc文件的配置(注意,opencv4生成的文件叫做opencv4.pc)

错误:

Maybe need administrative privileges.

错误

CMake Error at cmake_install.cmake:41 (file):
  file cannot create directory: /usr/local/share/licenses/opencv3.  Maybe
  need administrative privileges.

解决

需要su权限

IPPICV: Download: ippicv_2020_lnx_intel64_20191018_general.tgz

错误

 IPPICV: Download: ippicv_2020_lnx_intel64_20191018_general.tgz
-- Try 1 failed
-- 
=======================================================================
  Couldn't connect to server from the Internet.
  Perhaps direct connections are not allowed in the current network.
  To use proxy please check/specify these environment variables:
  - http_proxy/https_proxy
  - and/or HTTP_PROXY/HTTPS_PROXY

查看

# cd ../.cache/ippicv/
# ls -l

在这里插入图片描述

解决

方法0

进入 IPAddress.com 网站查询raw.githubusercontent.com真实地址。
打开 etchosts,(需要使用管理员权限打开)
追加199.232.96.133 raw.githubusercontent.com如下:
在这里插入图片描述

方法1:

1、手动下载

官网下载太慢了,直接到百度云下载吧:

链接:https://pan.baidu.com/s/14EzGMm5tUp9FuM5Gb2_Z8Q
提取码:n65y

在这里插入图片描述
在这里插入图片描述

2、覆盖

 mv ippicv_2020_lnx_intel64_general_20191018_general.tgz opencv-4.3.0/.cache/ippicv/7421de0095c7a39162ae13a6098782f9-ippicv_2020_lnx_intel64_20191018_general.tgz 

cmake/OpenCVModule.cmake:370 (_glob_locations)

错误

CMake Error at cmake/OpenCVModule.cmake:288 (message):
  No modules has been found:
  /home/oceanstar/workspace/opencv-4.3.0/opencv_contrib/modules
Call Stack (most recent call first):
  cmake/OpenCVModule.cmake:370 (_glob_locations)
  modules/CMakeLists.txt:7 (ocv_glob_modules)

解决方法

将opencv_contrib放到opencv-4.3.0之下
在这里插入图片描述

编译OpenCV提示opencv_contrib缺少boostdesc_bgm.i等文件

错误

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

解决

方法0

进入 IPAddress.com 网站查询raw.githubusercontent.com真实地址。
打开 /etc/hosts,(需要使用管理员权限打开)
追加199.232.96.133 raw.githubusercontent.com如下:
在这里插入图片描述

方法1

1、手动下载
下载地址

2、拷贝到源码并生成同名文件,放到 opencv_contrib/modules/xfeatures2d/src/、 cd opencv-4.3.0/.cache/xfeatures2d/boostdesc/cd opencv-4.3.0/.cache/xfeatures2d/vgg/目录下即可

mv boostdesc_bgm.i opencv-4.3.0/.cache/xfeatures2d/boostdesc/0ea90e7a8f3f7876d450e4149c97c74f-boostdesc_bgm.i 
mv boostdesc_bgm_bi.i opencv-4.3.0/.cache/xfeatures2d/boostdesc/232c966b13651bd0e46a1497b0852191-boostdesc_bgm_bi.i 
mv  boostdesc_bgm_hd.i opencv-4.3.0/.cache/xfeatures2d/boostdesc/324426a24fa56ad9c5b8e3e0b3e5303e-boostdesc_bgm_hd.i 
mv boostdesc_lbgm.i opencv-4.3.0/.cache/xfeatures2d/boostdesc/0ae0675534aa318d9668f2a179c2a052-boostdesc_lbgm.i 
mv boostdesc_binboost_064.i opencv-4.3.0/.cache/xfeatures2d/boostdesc/202e1b3e9fec871b04da31f7f016679f-boostdesc_binboost_064.i
mv boostdesc_binboost_128.i opencv-4.3.0/.cache/xfeatures2d/boostdesc/98ea99d399965c03d555cef3ea502a0b-boostdesc_binboost_128.i 
mv boostdesc_binboost_256.i opencv-4.3.0/.cache/xfeatures2d/boostdesc/e6dcfa9f647779eb1ce446a8d759b6ea-boostdesc_binboost_256.i
mv vgg_generated_48.i opencv-4.3.0/.cache/xfeatures2d/vgg/e8d0dcd54d1bcfdc29203d011a797179-vgg_generated_48.i
mv vgg_generated_80.i opencv-4.3.0/.cache/xfeatures2d/vgg/7cd47228edec52b6d82f46511af325c5-vgg_generated_80.i 
mv vgg_generated_64.i opencv-4.3.0/.cache/xfeatures2d/vgg/7126a5d9a8884ebca5aea5d63d677225-vgg_generated_64.i
mv vgg_generated_120.i opencv-4.3.0/.cache/xfeatures2d/vgg/151805e03568c9f490a5e3a872777b75-vgg_generated_120.i

$ tree opencv-4.3.0/.cache/xfeatures2d/
opencv-4.3.0/.cache/xfeatures2d/
├── boostdesc
│   ├── 0ae0675534aa318d9668f2a179c2a052-boostdesc_lbgm.i
│   ├── 0ea90e7a8f3f7876d450e4149c97c74f-boostdesc_bgm.i
│   ├── 202e1b3e9fec871b04da31f7f016679f-boostdesc_binboost_064.i
│   ├── 232c966b13651bd0e46a1497b0852191-boostdesc_bgm_bi.i
│   ├── 324426a24fa56ad9c5b8e3e0b3e5303e-boostdesc_bgm_hd.i
│   ├── 98ea99d399965c03d555cef3ea502a0b-boostdesc_binboost_128.i
│   └── e6dcfa9f647779eb1ce446a8d759b6ea-boostdesc_binboost_256.i
└── vgg
    ├── 151805e03568c9f490a5e3a872777b75-vgg_generated_120.i
    ├── 7126a5d9a8884ebca5aea5d63d677225-vgg_generated_64.i
    ├── 7cd47228edec52b6d82f46511af325c5-vgg_generated_80.i
    └── e8d0dcd54d1bcfdc29203d011a797179-vgg_generated_48.i

$ tree opencv-4.3.0/opencv_contrib/modules/xfeatures2d/src/
opencv-4.3.0/opencv_contrib/modules/xfeatures2d/src/
├── affine_feature2d.cpp
├── boostdesc_bgm_bi.i
├── boostdesc_bgm_hd.i
├── boostdesc_bgm.i
├── boostdesc_binboost_064.i
├── boostdesc_binboost_128.i
├── boostdesc_binboost_256.i
├── boostdesc.cpp
├── boostdesc_lbgm.i
├── brief.cpp
├── cuda
│   └── surf.cu
├── daisy.cpp
├── ellipticKeyPoint.cpp
├── fast.cpp
├── freak.cpp
├── generated_16.i
├── generated_32.i
├── generated_64.i
├── gms.cpp
├── harris_lapace_detector.cpp
├── latch.cpp
├── logos
│   ├── Logos.cpp
│   ├── Logos.hpp
│   ├── Match.cpp
│   ├── Match.hpp
│   ├── Point.cpp
│   ├── Point.hpp
│   ├── PointPair.cpp
│   └── PointPair.hpp
├── logos.cpp
├── lucid.cpp
├── msd.cpp
├── opencl
│   └── surf.cl
├── pct_signatures
│   ├── constants.hpp
│   ├── distance.hpp
│   ├── grayscale_bitmap.cpp
│   ├── grayscale_bitmap.hpp
│   ├── pct_clusterizer.cpp
│   ├── pct_clusterizer.hpp
│   ├── pct_sampler.cpp
│   ├── pct_sampler.hpp
│   └── similarity.hpp
├── pct_signatures.cpp
├── pct_signatures_sqfd.cpp
├── precomp.hpp
├── sift.cpp
├── stardetector.cpp
├── surf.cpp
├── surf.cuda.cpp
├── surf.hpp
├── surf.ocl.cpp
├── vgg.cpp
├── vgg_generated_120.i
├── vgg_generated_48.i
├── vgg_generated_64.i
├── vgg_generated_80.i
└── xfeatures2d_init.cpp

如果替换了还是在下载,就把下载的链接注释掉!!!!!类似下图

在这里插入图片描述

data: Download failed: 28;“Timeout was reached”

Make Warning at cmake/OpenCVDownload.cmake:202 (message):
  data: Download failed: 28;"Timeout was reached"

  For details please refer to the download log file:

  /home/oceanstar/workspace/opencv/build/CMakeDownloadLog.txt

Call Stack (most recent call first):
  opencv_contrib/modules/face/CMakeLists.txt:13 (ocv_download)


CMake Warning at opencv_contrib/modules/face/CMakeLists.txt:26 (message):
  Face: Can't get model file for face alignment.

替换,然后opencv_contrib/modules/face/CMakeLists.txt:13 (ocv_download)注释掉
在这里插入图片描述

fatal error: features2d/test/test_detectors_regression.impl.hpp: 没有那个文件或目录

fatal error: features2d/test/test_detectors_regression.impl.hpp: 没有那个文件或目录

#include "features2d/test/test_detectors_regression.impl.hpp"

头文件include地址不对,解决方法如下:

将opencv-4.1.0/modules/features2d/test/文件下的

test_descriptors_invariance.impl.hpp
test_descriptors_regression.impl.hpp
test_detectors_invariance.impl.hpp
test_detectors_regression.impl.hpp
test_invariance_utils.hpp

拷贝到opencv_contrib-4.1.0/modules/xfeatures2d/test/文件下。

同时,将opencv_contrib-4.1.0/modules/xfeatures2d/test/test_features2d.cpp文件下的

#include "features2d/test/test_detectors_regression.impl.hpp"
#include "features2d/test/test_descriptors_regression.impl.hpp"

改成:

#include "test_detectors_regression.impl.hpp"
#include "test_descriptors_regression.impl.hpp"

将opencv_contrib-4.1.0/modules/xfeatures2d/test/test_rotation_and_scale_invariance.cpp文件下的

#include "features2d/test/test_detectors_invariance.impl.hpp" 
#include "features2d/test/test_descriptors_invariance.impl.hpp"

改成

#include "test_detectors_invariance.impl.hpp"
#include "test_descriptors_invariance.impl.hpp"

opencv2/xfeatures2d/cuda.hpp:没有那个文件或目录

下面的方法没有用,老老实实改目录吧【和上面的方法一样】

在这里插入图片描述
打开 /home/oceanstar/CLionProjects/opencv-3.4.0/modules/stitching 下的CMakeLists.txt

添加 : INCLUDE_DIRECTORIES("/home/oceanstar/CLionProjects/opencv-3.4.0/opencv_contrib/modules/xfeatures2d/include")

在这里插入图片描述

Checking for module ‘gtk±3.0’

– No package ‘gtk±3.0’ found
在这里插入图片描述
解决:

 yum install gtk3-devel

测试C程序

基础包

mkdir tt && cd tt
vi DisplayImage.cpp

#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv )
{
    if ( argc != 2 )
    {
        printf("usage: DisplayImage.out <Image_Path>n");
        return -1;
    }
    Mat image;
    image = imread( argv[1], 1 );
    if ( !image.data )
    {
        printf("No image data n");
        return -1;
    }
    namedWindow("Display Image", WINDOW_AUTOSIZE );
    imshow("Display Image", image);
    waitKey(0);
    return 0;
}

vi CMakeLists.txt

set(CMAKE_CXX_STANDARD 14)								#设置c++标准为14
cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable( DisplayImage DisplayImage.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )

cmake 并测试如下:

[root@localhost tt]# cmake3 .
-- The C compiler identification is GNU 4.8.5
-- The CXX compiler identification is GNU 4.8.5
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found OpenCV: /usr/local (found version "4.1.1")
-- Configuring done
-- Generating done
-- Build files have been written to: /root/tt

[root@localhost tt]# make
Scanning dependencies of target DisplayImage
[ 50%] Building CXX object CMakeFiles/DisplayImage.dir/DisplayImage.cpp.o
[100%] Linking CXX executable DisplayImage
[100%] Built target DisplayImage

[root@localhost tt]# ./DisplayImage lena.jpg
(Display Image:7859): Gtk-WARNING **: 09:04:15.519: cannot open display:

在这里插入图片描述

扩展包

#include <iostream>
#include <vector>

#include <opencv2/xfeatures2d.hpp>
#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

int main()
{

    Mat img = imread("/home/oceanstar/CLionProjects/object-detection-SIFT-master/image.png",cv::IMREAD_COLOR);
    Ptr<Feature2D> sift = xfeatures2d::SIFT::create();
    vector<cv::KeyPoint> keypoints;
    Mat descriptors;

    sift->detectAndCompute(img, cv::noArray(),keypoints, descriptors);
    cv::drawKeypoints(img,keypoints,descriptors,cv::Scalar(0, 255, 255));
    imshow("Result", descriptors);

    waitKey();
    return 0;
}

在这里插入图片描述

卸载

# make uninstall

pkg-config

pkg-config opencv4 --cflags --libs

编译OpenCV提示opencv_contrib缺少boostdesc_bgm.i等文件
test_detectors_regression.impl.hpp: 没有那个文件或目录

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/zhizhengguan/article/details/107540971
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-05-16 05:12:31
  • 阅读 ( 1958 )
  • 分类:Linux

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢