【前言】
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,它提供了各种用于处理图像和视频数据的算法和工具。其功能涵盖了多个计算机视觉任务,包括但不限于图像滤波、特征提取、目标检测、图像分割、视频分析等众多领域。例如,在图像滤波方面,它可以通过不同的滤波算法(如高斯滤波、中值滤波等)去除图像中的噪声,使图像更加清晰。在特征提取领域,OpenCV 能够提取图像中的关键特征点(如 SIFT、SURF 等特征点),这些特征点对于图像匹配、目标识别等任务非常有用。
我准备处理人脸识别等项目,安装openCV是必须的。
1、执行conda install opencv
2、安装结束后,进入python环境,执行import cv2,但是出现报错:
(base) root@myd-lr3576x-debian:~# python
Python 3.12.2 | packaged by conda-forge | (main, Feb 16 2024, 20:38:53) [GCC 12.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: /lib/aarch64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.32' not found (required by /root/miniconda3/lib/python3.12/site-packages/../../././libtbb.so.12)
>>> print(cv2.__version__)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'cv2' is not defined
复制代码【解决方法】
1、执行strings /lib/aarch64-linux-gnu/libstdc++.so.6 | grep GLIBCXX来查看下系统目前都有哪些版本的
看到提示的版本只支持GLBCXX_3.4.30所以与3.4.32不符合,所以报错。
2、使用查找find / -name "libstdc++.so.6",看是不是系统上还有其他的版本
(base) root@myd-lr3576x-debian:~# find / -name "libstdc++.so.6"
/usr/lib/aarch64-linux-gnu/libstdc++.so.6
/root/miniconda3/pkgs/libstdcxx-ng-11.2.0-h1234567_1/lib/libstdc++.so.6
/root/miniconda3/pkgs/libstdcxx-14.2.0-h3f4de04_1/lib/libstdc++.so.6
复制代码3、查看其他文件的版支持:
(base) root@myd-lr3576x-debian:~# strings /root/miniconda3/pkgs/libstdcxx-14.2.0-h3f4de04_1/lib/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_3.4.26
GLIBCXX_3.4.27
GLIBCXX_3.4.28
GLIBCXX_3.4.29
GLIBCXX_3.4.30
GLIBCXX_3.4.31
GLIBCXX_3.4.32
GLIBCXX_3.4.33
复制代码4、将这个文件复制到/usr/lib/aarch64-linux-gnu/目录下:
(base) root@myd-lr3576x-debian:~# cp /root/miniconda3/pkgs/libstdcxx-14.2.0-h3f4de04_1/lib/libstdc++.so.6 /usr/lib/aarch64-linux-gnu/libstdc++.so.6
复制代码【验证】
再次进入python环境,导入cv2后再打印版本号,显示正确:
(base) root@myd-lr3576x-debian:~# python
Python 3.12.2 | packaged by conda-forge | (main, Feb 16 2024, 20:38:53) [GCC 12.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> print(cv2.__version__)
4.10.0
>>>
复制代码