总结:CentOS 安装opencv4.1.0的详细安装步骤 (更新VideoCapture)

mac2024-05-28  59

安装 额外工具

 

yum install gcc gcc-c++

yum install cmake3

yum install gtk2-devel

yum install ant

yum install –y epel-release

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-1.el7.nux.noarch.rpm

yum install ffmpeg ffmpeg-devel

      (5 6 7 8步是为了安装 ffmpeg         

      ffmpeg –version 查看ffmpeg版本)

 

安装opencv

下载: 官方地址:https://opencv.org/releases/

(本地scp到服务器

scp .\opencv-4.1.0.zip root@666.66.666.666:/home/

 

(以下 9 ~ 12步 为本人针对之前生产环境及CMakeLists配置,因人而异不用一致)

 

 

 

cd /home

unzip opencv-4.1.0.zip

cd opencv-4.1.0

mkdir build

cd build

cmake3 -D BUILD_SHARED_LIBS=ON -D BUILD_TESTS=OFF -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv/ ..

make

make install

cd /usr/local/opencv

cp -r include /usr/local/

cd /usr/local/opencv/lib64

cp libopencv* /usr/local/lib64 

vim /etc/ld.so.conf      (增加: /usr/local/lib64    /usr/local/lib )    

source /etc/profile

 

如果出现形如

Building CXX object 3rdparty/protobuf/CMakeFiles/libprotobuf.dir/src/google/protobuf/arena.cc.o

/home/jovyan/opencv-4.0.0/3rdparty/protobuf/src/google/protobuf/arena.cc:51:29: error: ‘SequenceNumber’ in namespace ‘google::protobuf::internal’ does not name a type

 google::protobuf::internal::SequenceNumber ArenaImpl::lifecycle_id_generator_;

……

的问题则 上面第6步改为

cmake -D BUILD_SHARED_LIBS=ON -D BUILD_TESTS=OFF -D CMAKE_BUILD_TYPE=RELEASE -D WITH_PROTOBUF=OFF -D CMAKE_INSTALL_PREFIX=/usr/local/opencv/ ..

解决办法来源于https://github.com/opencv/opencv/issues/13328

 

 

测试 opencv

 

cd /home

(传一张图像和一段视频到服务器 

scp .\1.png root@666.66.666.666:/home/

scp .\1.mp4 root@666.66.666.666:/home/

)

 

vim checkOpenCV.cpp

#代码如下

#include <opencv2/opencv.hpp>

#include <iostream>

 

int main() {

    cv::Mat img = cv::imread("./1.png", 1);

    if(!img.data){

         std::cout << " fail to load ./1.png " << std::endl;

         return -1;

    }

    cv::imshow("img", img);

    cv::imwrite("11.png", img);

    std::cout << " 11.png press any key to check VideoCapture . " << std::endl;

    cv::waitKey();

 

    cv::VideoCapture vc;

    vc.open("./1.mp4");

 

    if (vc.isOpened()) {

         cv::Mat img;

         while (1) {

             vc >> img;

             if (!img.data) {

                  cv::destroyAllWindows();

                  vc.release();

                  break;

             }

             cv::imshow("vc", img);

             cv::waitKey(30);

         }

    }else{

         std::cout << " fail to load ./1.mp4 " << std::endl;

         return -1;

    }

    return 0;

}

 

g++ checkOpenCV.cpp -I /usr/local/include/opencv4 -L /usr/local/lib64 -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_imgcodecs -lopencv_calib3d -lopencv_features2d -lopencv_videoio -std=gnu++11

 

./a.out

 

打完收工!

最新回复(0)