使用 OpenCV imread 和 imwrite 与 Python Path 对象会给出 SystemError:<内置函数 imread>返回 NULL,而不设置错误



将Python Path对象传递给OpenCV的imreadimwrite会导致一个未定义的错误:

from pathlib import Path
import cv2
img_path = Path("test.png")
img = cv2.imread(img_path)

结果:

Traceback (most recent call last):
File ".secondary_image_generation.py", line 36, in <module>
img = cv2.imread(img_path)
SystemError: <built-in function imread> returned NULL without setting an error

为什么会这样,我该如何避免?

OpenCV库源代码是用c++编写的,Python绑定主要是自动生成的,除了包装c++函数之外没有做更多的事情。c++函数需要字符串类型的文件名,所以你也必须提供给Python函数。

通过解析完整路径并将其转换为字符串,执行以下操作可以解决此问题:

img_path = Path("test.png")
img = cv2.imread(str(img_path.resolve()))

对于当前版本的OpenCV,这仍然是一个开放的特性请求。

相关内容

  • 没有找到相关文章

最新更新