目录
一、centos7的安装
二、gcc的安装
三、cmake的安装
四、Opencv4.5.0的安装
五、使用Opencv编写C++图像处理程序
六、部署
一、centos7的安装
建议使用最小安装方法,安装出来的操作系统比较干净,参考教程 https://blog.csdn.net/u010476739/article/details/106806683
另外,安装时CPU最好开4个,内存7G以上。因为后面要编译opencv,对编译性能要求稍微高一些。
二、gcc的安装
默认的 CentOS 软件源上包含一个名称为Development Tools
的软件包组,这个组合包含了 GCC 编译器以及一系列库文件,还有其他编译软件需要用到的工具。运行代码如下:
sudo yum group install "Development Tools"
安装完成后使用命令:
gcc --version
来验证安装是否成功,效果如下:
三、cmake的安装
1. 安装wget
yum install -y wget
2. 获取CMake源码包
wget https://cmake.org/files/v3.6/cmake-3.6.2.tar.gz
3. 解压CMake源码包
tar -zxvf cmake-3.6.2.tar.gz
4. 编译安装
cd cmake-3.6.2
./bootstrap && make -j4 && sudo make install
最后使用命令:
cmake --version
可以查看当前安装的cmake版本号。
四、Opencv4.5.0的安装
1. 安装依赖
sudo yum -y install epel-release
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 -y install libtiff-devel
sudo yum -y install tbb-devel eigen3-devel
sudo yum -y install boost boost-thread boost-devel
sudo yum -y install libv4l-devel
2. 下载opencv和opencv_contrib安装包:
git clone https://gitee.com/binghai228/opencv.git
cd opencv
git checkout 4.5.0
cd ..
git clone https://gitee.com/binghai228/opencv_contrib
cd opencv_contrib
git checkout 4.5.0 # 选择分支
cd ..
然后将opencv_contrib移动到opencv目录下,
然后进入opencv文件夹并创建build文件夹:
cd opencv
mkdir build
cd build
此时opencv目录下结构如下图所示:
3. 额外配置
(1)去github或是其他网站把opencv_contrib的module缺失文件下载下来,然后放到opencv_contrib/modules/xfeatures2d/src目录下,文件列表如下,这里给一个我自己整理的下载链接:xfeatures2d
(2)将opencv/modules/features2d复制,然后粘贴到build目录
4. 编译和安装
首先确保在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 ..
然后输入下述命令进行编译:
make
这里不建议用make -j4或者make -j8进行编译,因为多线程编译虽然速度快但是容易出问题。中间如果因为特殊原因断了可以使用make命令再继续。
编译100%完成后最后输入下述命令进行安装:
make install
5. 配置opencv库可执行路径
首先安装vim:
sudo yum install -y vim
添加库路径–执行:
sudo ln -s /usr/local/lib64/pkgconfig/opencv4.pc /usr/share/pkgconfig/
sudo ldconfig
添加环境变量:
sudo vim /etc/profile
打开此文件,在文件末尾另起行加入如下两行:(保存,退出)
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib64/pkgconfig
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64
最后令其生效:
source /etc/profile
接下来进行pkg-config配置,默认的pkg搜索链接路径/usr/lib/pkgconfig,需要将opencv.pc拷贝到pkg的默认路径下
cp /usr/local/lib64/pkgconfig/opencv4.pc /usr/lib/pkgconfig
然后输入命令:
ldconfig
重启以后,输入下面的命令查看当前opencv版本号:
pkg-config --modversion opencv4
如果安装正常,输出如下所示:
五、使用Opencv编写C++图像处理程序
1. 编写CMakeLists.txt
# 声明要求的 cmake 最低版本
cmake_minimum_required( VERSION 3.1 )# 声明一个 cmake 工程
project( pro )# 设置编译模式
set( CMAKE_BUILD_TYPE "Release" )#添加OPENCV库
#指定OpenCV版本,代码如下
#find_package(OpenCV 3.3 REQUIRED)
#如果不需要指定OpenCV版本,代码如下
find_package(OpenCV REQUIRED)#添加OpenCV头文件
include_directories(${OpenCV_INCLUDE_DIRS})#显示OpenCV_INCLUDE_DIRS的值
message(${OpenCV_INCLUDE_DIRS})# 添加一个可执行程序
# 语法:add_executable( 程序名 源代码文件 )
add_executable( main main.cpp )# 将库文件链接到可执行程序上
target_link_libraries( main ${OpenCV_LIBS})
2. 编写C++文件main.cpp
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;int main(){Mat image;image = imread("./1.jpg");if (image.empty()) {cout << "Error! Input image cannot be read...\n";return -1;}cout<<"图像宽为:"<<image.cols<<"\t高度为:"<<image.rows<<"\t通道数为:"<<image.channels()<<endl;return 0;
}
然后正常的使用cmake编译和运行即可。
六、部署
在一台CentOS7上的机器写完的opencv程序如何部署到另一台CentOS7的机器上,本小节实现以下这个功能。首先安装gcc,然后拷贝可执行程序到目标机器上,提升可执行程序权限:
chmod +x main
步骤1. 编辑链接配置文件
vim /etc/ld.so.conf.d
步骤2. 确认内容是否为如下,不是则修改为如下:保存并退出
include /etc/ld.so.conf.d/*.conf
步骤3. 进入目录内,创建*.conf文件,文件名随意,扩展名必须为.conf
cd /etc/ld.so.conf/
vim libmy.conf
步骤4. 在文件内部,添加so的路径,保存并退出
/home/czd/eclipse-workspacee/calllib/Debug
步骤5. 执行命令时期生效
sudo ldconfig
程序在运行时寻找so库就会到添加的目录中寻找。