繁体   English   中英

如何使 cv2.imread() 不为空?

[英]How to make cv2.imread() not empty?

我遇到问题的代码部分如下。

if __name__ == '__main__':
    for n, image_file in enumerate(os.scandir(image_folder)):
        img = image_file
        fig, ax = plt.subplots(1)
#       mngr = plt.get_current_fig_manager()
#       mngr.window.setGeometry(250, 120, 1280, 1024)
        image = cv2.imread(image_file.path)
        image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

我收到以下错误

 image = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
    cv2.error: OpenCV(3.4.4) C:\projects\opencv-python\opencv\module\imgproc\src\color.cpp:181:error:(-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

我知道 imread() 可能是空的,因为它试图读取的图像没有正确保存。 我正在尝试使用另存为 000001、000002、000003 的 3 个图像来测试此代码......我对为什么保存在 C:\\imagez 文件夹中的图像不起作用感到困惑。 我尝试保存 3 个新图像,但仍然出现相同的错误。 任何建议都会很棒!

如果您阅读有关cv2.imread()文档,您会发现它可能会失败 - 在这种情况下,它返回None (这就是Mat::data==NULL在 python 中的转换):

函数 imread 从指定文件加载图像并返回它。 如果无法读取图像(由于文件丢失、权限不当、格式不受支持或无效),则该函数返回一个空矩阵 ( Mat::data==NULL )。

如果您将None作为输入提供给cv2.cvtColor(image, cv2.COLOR_BGR2RGB) - 它会在检查(-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'的参数(-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'并找到时(-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'它是None

使固定:

if __name__ == '__main__':
    for n, image_file in enumerate(os.scandir(image_folder)):
        fig, ax = plt.subplots(1)
        image = cv2.imread(image_file.path)
        if image:
            image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
        else:
            print("Unable to load image at path {}".format(image_file))

检查给您带来这些问题的路径的 _exact_spelling - 这可能只是您的路径/文件名中的拼写错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM