安装说明:
服务器配置:
系统:ubuntu18.04
cpu:intel系列
gpu:3090
写这份博客是因为很多次在安装过程中需要手动下载各种资源包,很麻烦,比如:
ippicv 和 face_landmark_model.dat的下载问题
核心思想:
利用opencv的cache文件夹,让opencv认为我们已经下载好了相关文件(确实也已经下载好了,只不过是事先下好的而已)
资源获取:
1、通过github下载 opencv_4.5.1和对应的opencv_contrib_4.5.1。
2、下载安装用的cache文件(这里也可以下opencv4.5.1和opencv_contrib_4.5.1):
opencv_451_cache
百度网盘:https://pan.baidu.com/s/1H6kyZ4s1kJWCsVK_6Ugkig
提取码:ropy
安装准备:
1、先把文件上传至服务器指定目录,例如:
/home/enviroment/opencv/
2、个人比较喜欢把opencv装在指定目录,这里新建目录(没有sudo权限可以直接安装在自己的用户目录下):
sudo mkdir /usr/local/opencv451
3、把 opencv_451_cache.zip、opencv-4.5.1.zip 和 opencv_contrib-4.5.1.zip解压至当前目录
4、把解压出的cache文件夹移入opencv-4.5.1内(重命名为.cache)
mv cache opencv-4.5.1/.cache
接下来就是正常的安装流程了:
安装流程
安装依赖
[compiler] sudo apt-get install build-essential
[required] sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
[optional] sudo apt-get install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
编译
cd opencv-4.5.1
mkdir build
cd build
配置CMake
cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local/opencv451 -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.5.1/modules -DBUILD_TIFF=ON -DBUILD_opencv_python3=no -DBUILD_opencv_python2=no -DPYTHON_DEFAULT_EXECUTABLE=/usr/bin/python3 -DBUILD_JAVA=off -DWITH_GTK=ON ..
编译安装(make的时候会比较慢)
make -j8
sudo make install
安装好后代码测试
cmakelist编写
cmake_minimum_required(VERSION 2.8)
project(opencv_test)
set(OpenCV_DIR /usr/local/opencv451/lib/cmake/opencv4)
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable(opencv_test main.cpp )
target_link_libraries(opencv_test ${OpenCV_LIBS} )
main函数编写
#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv )
{
if ( argc != 2 )
{
printf("usage: opencv_test.out <Image_Path>\n");
return -1;
}
Mat image;
image = imread( argv[1], 1 );
if ( !image.data )
{
printf("No image data \n");
return -1;
}
rectangle(image, Point(100, 100), Point(300, 300), Scalar(0, 255, 0), 2, 8, 0);
imwrite("result.jpg", image);
printf("finish~\n");
return 0;
}
这样就好了~