Linux Centos8部署opencv

1、首先opencv是用C++写的,要基于gcc和g++,所以Linux中要有这个

sudo yum update
sudo yum install gcc gcc-c++

2、将安装包opencv-4.6.0.zip上传至【/opt/software/opencv】目录下

需要的包都在这里了
链接:https://pan.baidu.com/s/1CApu9JUcP9oDVR96n6WQGA?pwd=1234
提取码:1234

3、解压opencv-4.6.0.zip并进入opencv-4.6.0,同时创建build文件夹

tar -xzvf opencv-4.6.0.tar.gz
cd opencv-4.6.0
mkdir build
cd build

4、进行编译

cmake -D BUILD_SHARED_LIBS=OFF -D BUILD_TEST=OFF ..
如果不行,再用下面这个
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/opt/software/opencv/opencv-4.6.0 …

5、查看CPU核数并执行make命令

cat /proc/cpuinfo | grep "cpu cores" | uniq
make -j8
sudo make install

6、这个时候/opt/software/opencv/opencv-4.6.0/build/lib下,编译之后,如果不生成 opencv_java460.so 文件,是因为cmke需要java环境和ant

解决办法:从上面的网盘直接下载,放入到/usr/lib目录下即可

7、使用opencv时,要加载opencv_java460.so文件,代码中加入下面这段

static {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
}

8、但是!启动可能会报错,我遇到两个问题

第一个:/lib64/libm.so.6: version `GLIBC_2.29' not found
第二个:/lib64/libstdc++.so.6: version `GLIBCXX_3.4.26' not found

输入命令查询了一下当前版本

rpm -q glibc
ldd --version
strings /lib64/libm.so.6 | grep GLIBC_
查询GLIBC的版本为GLIBC_2.28
strings /lib64/libstdc++.so.6 | grep GLIBC
查询GLIBCXX的版本为GLIBCXX_3.4.25

8、解决第一个问题,准备升级相应版本,先升级GLIBC,这个一定要慎重,装错了可能机器就启动不了,你就凉了

安装步骤如下:
8.1、先拉取压缩包并进行解压
cd /opt/software/glibc2.29
拉取:wget http://ftp.gnu.org/gnu/glibc/glibc-2.29.tar.gz
解压:tar -zxvf glibc-2.29.tar.gz
8.2、创建build文件夹并编译
mkdir build
cd build
../configure --prefix=/usr
make -j8
sudo make install
8.3、最后安装完,可能会有两个报错,没关系一样用
查询一下版本
ldd --version
ok了

9、解决第二个问题

9.1、全局搜一下,看看有没有大于3.4.26版本的
find / -name "libstdc++.so.6.0.*"
我搜完之后,在docker容器中有高版本的,直接复制一份到/usr/lib64下
cp /data/lib/docker/overlay2/037d450f681bfcfd8d2c46bd47c7d196b41faf07345ebc138c0c873f5821a7ef/diff/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28 /usr/lib64
image.png
9.2、查看软连接的原始文件路径
readlink -f /lib64/libstdc++.so.6
# 备份软连接
mv /lib64/libstdc++.so.6 /lib64/libstdc++.so.6.bak
9.3、将新的文件【/usr/lib64/libstdc++.so.6.0.28】软连接到【/lib64/libstdc++.so.6】上
ln -s /usr/lib64/libstdc++.so.6.0.28 /lib64/libstdc++.so.6

10、至此opencv就能用啦!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容