1). 今日在Manjaro运行一个opencv python小程序出现下面问题:
[XXX@YYY pyApp]$ python dp.py
Traceback (most recent call last):
File "/home/XXX/pyApp/dp.py", line 5, in <module>
cv2.imshow("raw",img)
cv2.error: OpenCV(4.6.0.66) /io/opencv/modules/highgui/src/window.cpp:659: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvShowImage'
没法显示图片。查看小程序源文件:
[XXX@YYY pyApp]$ cat dp.py
import cv2
import numpy as np
img = cv2.imread('Mjolnir.jpg')
cv2.imshow("raw",img)
cv2.waitKey(0)
cv2.destroyAllWindows()
2). 重新安装opencv
[XXX@YYY pyApp]$ sudo pacman -S opencv
[sudo] XXX 的密码:
正在解析依赖关系...
正在查找软件包冲突...
软件包 (1) opencv-4.6.0-4
全部安装大小: 94.87 MiB
:: 进行安装吗? [Y/n] y
重新安装opencv-python
[XXX@YYY pyApp]$ pip install opencv-python
Defaulting to user installation because normal site-packages is not writeable
Collecting opencv-python
Using cached opencv_python-4.6.0.66-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (60.9 MB)
Requirement already satisfied: numpy>=1.17.3 in /usr/lib/python3.10/site-packages (from opencv-python) (1.23.3)
Installing collected packages: opencv-python
Successfully installed opencv-python-4.6.0.66
再次运行小程序一样的错误, 百度发现opencv没有安装opencv-contrib-python。
[XXX@YYY pyApp]$ pip install opencv-contrib-python
Collecting opencv-contrib-python
Downloading opencv_contrib_python-4.6.0.66-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (67.1 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 67.1/67.1 MB 516.5 kB/s eta 0:00:00
Requirement already satisfied: numpy>=1.17.3 in /usr/lib/python3.10/site-packages (from opencv-contrib-python) (1.23.3)
Installing collected packages: opencv-contrib-python
Successfully installed opencv-contrib-python-4.6.0.66
再次运行小程序,又出现如下错误:
[XXX@YYY pyApp]$ python dp.py
Traceback (most recent call last):
File "/home/XXX/pyApp/dp.py", line 1, in <module>
import cv2
File "/usr/lib/python3.10/site-packages/cv2/__init__.py", line 181, in <module>
bootstrap()
File "/usr/lib/python3.10/site-packages/cv2/__init__.py", line 175, in bootstrap
if __load_extra_py_code_for_module("cv2", submodule, DEBUG):
File "/usr/lib/python3.10/site-packages/cv2/__init__.py", line 28, in __load_extra_py_code_for_module
py_module = importlib.import_module(module_name)
File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "/usr/lib/python3.10/site-packages/cv2/gapi/__init__.py", line 290, in <module>
cv.gapi.wip.GStreamerPipeline = cv.gapi_wip_gst_GStreamerPipeline
AttributeError: partially initialized module 'cv2' has no attribute 'gapi_wip_gst_GStreamerPipeline' (most likely due to a circular import)
3). 百度结果,需要安装"opencv-python-headless":
[XXX@YYY pyApp]$ pip install "opencv-python-headless<4.3"
Defaulting to user installation because normal site-packages is not writeable
Collecting opencv-python-headless<4.3
Downloading opencv_python_headless-3.4.18.65-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (45.7 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 45.7/45.7 MB 382.7 kB/s eta 0:00:00
Requirement already satisfied: numpy>=1.19.3 in /usr/lib/python3.10/site-packages (from opencv-python-headless<4.3) (1.23.3)
Installing collected packages: opencv-python-headless
Successfully installed opencv-python-headless-3.4.18.65
因为是3.4版本,与opencv的版本号对应不上,运行出错误。卸载再重装。然后查看与opencv有关的程序包的版本:
[XXX@YYY pyApp]$ pip list | grep opencv
opencv-contrib-python 4.6.0.66
opencv-python 4.6.0.66
opencv-python-headless 4.5.4.60
三者的版本不一致,按最低版本重新安装。
[XXX@YYY pyApp]$ pip install opencv-python==4.5.4.60
Defaulting to user installation because normal site-packages is not writeable
Collecting opencv-python==4.5.4.60
Downloading opencv_python-4.5.4.60-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (60.3 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 60.3/60.3 MB 1.8 MB/s eta 0:00:00
Requirement already satisfied: numpy>=1.21.2 in /usr/lib/python3.10/site-packages (from opencv-python==4.5.4.60) (1.23.3)
Installing collected packages: opencv-python
Successfully installed opencv-python-4.5.4.60
[XXX@YYY pyApp]$ pip install opencv-contrib-python==4.5.4.60
Defaulting to user installation because normal site-packages is not writeable
Collecting opencv-contrib-python==4.5.4.60
Downloading opencv_contrib_python-4.5.4.60-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (66.4 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 66.4/66.4 MB 661.4 kB/s eta 0:00:00
Requirement already satisfied: numpy>=1.21.2 in /usr/lib/python3.10/site-packages (from opencv-contrib-python==4.5.4.60) (1.23.3)
Installing collected packages: opencv-contrib-python
Successfully installed opencv-contrib-python-4.5.4.60
运行:
[XXX@YYY pyApp]$ python dp.py
可以正常显示图片。Mnajaro有已经编译好的opencv库,可以让用户不必自己编译安装。上面的错误在Anaconda环境没有出现,应该库文件的问题。