安装 额外工具
-
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
打完收工!