升级到opencv-python 4.7会导致导入错误。

4
在使用opencv-python模块的项目中,我将其从4.6.0.66版本更新到了4.7.0.68版本。下次运行程序时,出现了导入错误: ImportError: dlopen(path/to/my/virtualenv/lib/python3.9/site-packages/cv2/cv2.abi3.so, 2): Symbol not found: _VTRegisterSupplementalVideoDecoderIfAvailable 将opencv-python降级回4.6.0.66后,导入错误消失了,一切都恢复正常了。
考虑到OpenCV 4.7是最近发布的版本,而且据我所知,_VTRegisterSupplementalVideoDecoderIfAvailable是macOS的一个函数,我猜测这是新版opencv-python的某种兼容性问题。在发生错误的机器上,我正在运行macOS Catalina(10.15.7)。
为了确定问题严格与opencv-python相关,我创建了一个干净的环境,安装了opencv-python 4.7,并尝试运行一个只有一行import cv2的脚本。结果出现了相同的错误。

这个问题在另一个项目中表明可能需要升级我的操作系统。

我可以接受降级到4.6,但很想知道是否有其他解决导入错误的替代方案。


1
我没有发现提到这些(opencv/opencv,opencv/opencv_contrib,opencv/opencv-python仓库)的任何问题,但也没有看到OpenCV的任何源代码,这很奇怪。也许可以提交一个问题。如果您(或其他任何人)能够在相同或类似的操作系统版本上复制或不复制这个问题,那就太好了。 - Christoph Rackwitz
只是一个想法,你是否升级了导入的软件包以保证兼容性? - fmw42
我还花了很多时间四处寻找是否已经有关于此问题的开放问题。我唯一能找到的是这个不相关项目中的问题 - 尽管它听起来几乎完全相同。 - Adam Richard
@fmw42,我不太确定你所说的“升级我的导入包”具体指的是什么。我创建了一个全新环境下的干净项目,并安装了opencv-python 4.7以重现这个问题。然后运行时遇到了相同的错误。 - Adam Richard
你的 Python 脚本中导入了哪些包?它们是否与你升级后的 Python 兼容? - fmw42
1
我肯定考虑到问题可能是由其他包引起的,因此我在一个干净的环境中进行了测试,只安装了opencv-python 4.7。尝试仅运行一行import cv2的脚本失败,并出现相同的错误。 - Adam Richard
1个回答

6

我也遇到了这个问题。 macOS Catalina 10.15.7 系统似乎太旧,无法支持新的opencv软件包。

pip3 install opencv-python==4.6.0.66

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接