如何在 CentOS 7 上安装 OpenCV
第 1 步:安装 OpenCV 的依赖项
- 默认的 CentOS 软件源上包含一个名称为Development Tools的软件包组,这个组合包含了 GCC 编译器以及一系列库文件,还有其他编译软件需要用到的工具;使用以下命令安装编译 OpenCV 所需的所有依赖项:
# 安装
yum group install "Development Tools" -y
# 验证gcc 查看版本
gcc --version
# 安装其它依赖
yum -y install cmake3 gcc gtk2-devel numpy pkconfig
yum -y install epel-release
yum -y install gtk2-devel
yum -y install libpng-devel
yum -y install jasper-devel
yum -y install openexr-devel
yum -y install libwebp-devel
yum -y install libjpeg-turbo-devel
yum -y install libtiff-devel
yum -y install tbb-devel eigen3-devel
yum -y install boost boost-thread boost-devel
yum -y install libv4l-devel
Cmake源码安装
CMake 是跨平台的安装编译工具
CentOS 7上官方的CMake版本是2.8.12,比较旧
许多新的C/C++项目要求的最低版本至少是3 需要升级旧版本或者直接安装新版
所以接下来直接进行编译安装
#默认的 CentOS 软件源上包含一个名称为Development Tools的软件包组,这个组合包含了 GCC 编译器以及一系列库文件,还有其他编译软件需要用到的工具
#yum group install 它安装一个安装包,这个安装包包涵了很多单个软件,以及单个软件的依赖关系
yum group install "Development Tools"
#如果安装上述工具包时候网络不畅通 可以选择只安装gcc及其依赖
yum -y install gcc gcc-c++ make automake
#安装wget
yum -y install wget
#安装openssl(高版本cmake需要)
yum -y install openssl-devel
#下载cmake源代码包
wget https://github.com/Kitware/CMake/releases/download/v3.22.2/cmake-3.22.2.tar.gz
#或者从本站下载源代码包
wget https://www.witersen.com/wp-content/uploads/2022/02/cmake-3.22.2.tar.gz
#解压、编译、安装
tar -zxvf cmake-3.22.2.tar.gz
cd cmake-3.22.2/
./bootstrap
#cpu几核写几
make -j4
make install
# 查看版本号
cmake --version
第 2 步:下载 OpenCV x.x.x 代码
下载并解压缩 OpenCV x.x.x 代码压缩文件,如下所示:
wget https://github.com/opencv/opencv/archive/x.x.x.zip
unzip x.x.x.zip
# 以4.6.0为例
wget https://github.com/opencv/opencv/archive/4..6.0.zip
unzip 4.6.0.zip
第三步:编译安装OpenCV x.x.x
使用以下命令编译安装OpenCV,编译好的OpenCV文件会保存在/usr/local
目录下;编译完 发现此目录并没有,但在/usr/share/pkgconfig/
是有的。
cd opencv-x.x.x
mkdir build
cd build
cmake3 \
-D CMAKE_BUILD_TYPE=DEBUG \
-D CMAKE_INSTALL_PREFIX=/usr/local ..
# 上述执行成功
# /* ---未测试---
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 \
-D WITH_TBB=OFF \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D WITH_V4L=ON \
-D WITH_QT=ON \
-D WITH_OPENGL=ON \
-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules/ \
-D WITH_GTK=ON \
-D ENABLE_CXX11=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D WITH_CUDA=OFF \
-D BUILD_opencv_cudacodec=OFF \
-D INSTALL_C_EXAMPLES=OFF \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D BUILD_EXAMPLES=OFF \
-D WITH_EIGEN=OFF \
-D WITH_VTK=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_opencv_python2=OFF \
../opencv
# */
make
make install
PS,如果没有相关依赖包,很多模块opencv在cmake配置时就取消掉了,因此编译出来的包有限,如果没有您想要的包或库,可能需要反复cmake和make、make install直接重复,因此这个编译包最好不要再安装完成后进删除,需要等待版本安装稳定后再说。
由于cmake时指定/usr/local安装路径,因此采用的默认安装路径 :
# OpenCV 默认安装路径是/usr/local目录下, 相关文件部署情况:
/usr/local/bin - executable files
/usr/local/lib - libraries (.so)
/usr/local/cmake/opencv4 - cmake package
/usr/local/include/opencv4 - headers
/usr/local/share/opencv4 - other files
# 由于cmake配置时,没有做安装目录指定,采用默认路径,也没有指定编译静态库,默认的是动态库编译
对于opencv,我们开发者最主要的就是头文件及库路径需要关注,本文的存放路径及相关内容信息如下:
# 头文件所在位置
[root@pyfree ***]# ls /usr/local/include/opencv4/opencv2/
calib3d features2d highgui.hpp objdetect stitching.hpp
calib3d.hpp features2d.hpp imgcodecs objdetect.hpp video
core flann imgcodecs.hpp opencv.hpp video.hpp
core.hpp flann.hpp imgproc opencv_modules.hpp videoio
cvconfig.h gapi imgproc.hpp photo videoio.hpp
dnn gapi.hpp ml photo.hpp
dnn.hpp highgui ml.hpp stitching
[root@pyfree ***]#
# 动态库文件位置
[root@pyfree ***]# ls /usr/local/lib64 | grep libopencv
libopencv_calib3d.so
libopencv_calib3d.so.407
libopencv_calib3d.so.4.7.0
libopencv_core.so
libopencv_core.so.407
......
第 4 步:配置所需的变量
除了编译和安装文件外,您还需要为 pkgconfig
和 OpenCV 指定路径信息:
ln -sf /usr/local/lib64/pkgconfig/opencv4.pc /usr/share/pkgconfig/
ldconfig
//修改PKG_CONFIG_PATH,需要已经安装pkgconfig包
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib64/pkgconfig:/usr/share/pkgconfig
//修改LD_LIBRARY_PATH,将opencv库路径加入,例如文末加入
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64:/usr/lib64:/lib64
source /etc/profile
//--2--,root
cd /etc/ld.so.conf.d/
vi opencv.conf
//或:gedit /etc/ld.so.conf.d/opencv.conf
//添加opencv动态库路径在文件中,如/usr/local/lib64
//配置生效,运行以下命令
ldconfig
echo '/usr/local/lib/' >> /etc/ld.so.conf.d/opencv.conf
ldconfig
将缺失的文件由源码中拷贝过来。
cp /root/opencv_20230711/opencv-4.6.0/build/unix-install/opencv4.pc /usr/share/pkgconfig/
ln -sf /usr/lib64/pkgconfig/ /usr/local/lib64/
参考资料:
https://juejin.cn/post/7202211586676703291
https://www.witersen.com/?p=1458
https://blog.csdn.net/py8105/article/details/129874628
Index of /releases
https://pkgconfig.freedesktop.org/releases/
https://blog.csdn.net/weixin_44847326/article/details/127264380
前期探索
OpenCV
cat <<"EOF" | bash
sudo yum install epel-release git gcc gcc-c++ cmake3 qt5-qtbase-devel python python-devel python-pip cmake make -y
sudo yum install python-devel numpy python34-numpy gtk2-devel libpng-devel jasper-devel openexr-devel libwebp-devel -y
sudo yum install libjpeg-turbo-devel libtiff-devel libdc1394-devel tbb-devel eigen3-devel gstreamer-plugins-base-devel -y
sudo yum install freeglut-devel mesa-libGL mesa-libGL-devel boost boost-thread boost-devel libv4l-devel -y
mkdir -p ~/opencv_build && cd ~/opencv_build
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
cd ~/opencv_build/opencv && mkdir build && cd build
cmake3 -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_build/opencv_contrib/modules \
-D BUILD_EXAMPLES=ON ..
make -j12
sudo make install
sudo ln -s /usr/local/lib64/pkgconfig/opencv4.pc /usr/share/pkgconfig/
sudo ldconfig
pkg-config --modversion opencv4
sudo ln -s /usr/local/lib/python2.7/site-packages/cv2 /usr/lib/python2.7/site-packages/
EOF
git clone https://gitee.com/opencv/opencv.git
checkout 4.6.0
OpenCV 安装和配置 - Mac OS 环境
1、本文环境
- Mac OS版本12.3.1
- OpenCV版本4.6.0
2、OpenCV的安装
2.1、首先检查下是否已经安装了cmake
cmake --version
若没有安装,执行命令:
brew install cmake
2.2、下载OpenCV源码
官方下载页: Releases - OpenCV
github下载:git clone GitHub - opencv/opencv: Open Source Computer Vision Library
或者 brew install opencv
2.3、构建OpenCV
OpenCV安装路径
将下载好的源码解压到 /usr/local 目录下,笔者的目录 /usr/local/opencv-4.6.0
这里建议将OpenCV安装到了/usr/local目录下,一般无需配置环境变量;若你安装到自定义的目录,为了让编译器找到OpenCV我们需要:
修改环境变量
在CMakeLists设置OpenCV_DIR为你的安装目录,例如你安装到~/opencv/opencv_libs,按下面的方式修改:
set(OpenCV_DIR ~/opencv/opencv_libs/lib/cmake/opencv4)
find_package(OpenCV REQUIRED)
这种方式笔者还没有验证,交给喜欢折腾的人去实验吧,哈
创建release文件夹
cd /usr/local/opencv-4.6.0
mkdir release
进入release目录下,配置环境
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local …
编译安装
make -j8
这个过程需要耐心等待一下
-j8指的是同时执行8个任务(jobs),可以加快编译速度。根据你CPU的性能,选择合适的参数将每个核心拉满即可。
根据性能不同,编译时间有点长。编译成功后进行安装
sudo make install
make编辑的时候可能会报错,自行解决就可以了
笔者遇到了make[2]: *** No rule to make target zlib', needed by
lib/libopencv_imgcodecs.4.6.0.dylib’. Stop.这个错误,原因是zlib这个包在Homebrew里面有冲突,解决办法就是卸载了有两个,
1、Homebrew然后重装一下
ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)”
2、将BUILD-ZLIB参数取消打勾(-DBUILD_ZLIB=OFF)
3、构建java环境
OpenCV构建Java环境需要安装JDK和ANT,我本机的环境是JDK 1.8、ANT 1.10.1
安装JDK
各位看官自行度娘一下吧,装完记得配置好环境变量。
安装ANT
brew install ant
cmake配置
这里参考一下参考官网的描述,需要配在cmake中配置-DBUILD_SHARED_LIBS=OFF
https://docs.opencv.org/4.6.0/d9/d52/tutorial_java_dev_intro.html
cmake -DBUILD_SHARED_LIBS=OFF …
然后我们看一下To be built项中是否包含了java,如果存在就说明java会被编译出来,否则java会在Unavailable项中出现,我这里折腾了许久,试过N中方式始终找不到JDK环境,最后重启了系统就解决了…
如果java Unavailable,在日志的后面会有提示,如果后面项目为空则说明没有找到对应的环境
编译安装
检查java没问题后我们执行编译和安装即可
make -j8
sudo make install
评论区