#python #opencv
Вопрос:
Передача объекта пути Python в OpenCV imread
или imwrite
приводит к неопределенной ошибке:
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
Почему это так и как я могу этого избежать?
Ответ №1:
Источники библиотеки OpenCV написаны на C , а привязки Python в основном создаются автоматически и не выполняют ничего, кроме обертывания функций C . Функции C ожидают имена файлов строкового типа, поэтому это то, что вы также должны предоставить функциям Python.
Выполнение следующих действий устраняет проблему, разрешая полный путь и преобразуя его в строку:
img_path = Path("test.png")
img = cv2.imread(str(img_path.resolve()))
Это все еще открытый запрос функций для текущей версии OpenCV.