安装opencv
sudo apt-get install opencv-python
sudo apt-get install opencv-contrib-python
报错
File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
ImportError: libGLX.so.0: cannot open shared object file: No such file or directory
最终解决方案:
尝试了很多方案,最终重新安:
sudo apt-get install libglx0 --fix-missing
sudo apt-get install opencv-python
sudo apt-get install opencv-contrib-python
module 'cv2.dnn' has no attribute 'DictValue' · Issue #884 · opencv/opencv-python · GitHub
# download the autofix tool
pip install opencv-fixer==0.2.5
# execute and wait is done
python -c "from opencv_fixer import AutoFix; AutoFix()"
参考解决方案:
libGLX.so.0: cannot open shared object file error on Mint 18.3 - Linux Mint Forums
sudo apt-get install libglx0
参考解决方案:
sudo apt install libopengl0 -y
参考解决方案:
为什么会说libGLX.so.0而不是libGLX.so找不到,编译链接的时候都是libGLX.so,可执行文件里面怎么嵌入的是libGLX.so.0。
ln -s libGLX.so.0 libGLX.so.0
引起这个问题的真正原因:
要想明白可执行文件里面为什么没有使用动态库的文件名,就要说明动态库里面一个神奇的属性 SONAME,如果动态库设置了SONAME,那么在静态链接阶段会将 SONAME嵌入到可执行文件中,而不会使用真实文件名称,同时后面的动态链接器
在运行时也会使用这个SONAME来搜索库。
$ objdump -p libtest.so | grep SONAME
SONAME libtest.so.0
结果:未解决。