opencv 读取图像断言失败

Posted

技术标签:

【中文标题】opencv 读取图像断言失败【英文标题】:opencv read image assertion failed 【发布时间】:2018-01-06 01:08:40 【问题描述】:

我是 python 和 opencv 的新手。 试图读取图像。

这是我的代码:-

import cv2
import numpy
img = cv2.imread('Test1.jpg',0)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

这是生成的错误:-

OpenCV 错误:imshow 中的断言失败 (size.width>0 && size.height>0),文件 /opt/concourse/worker/volumes/live/68762549-a7cd-401a-4fc4-6547354af396/volume/opencv_1512680491081/工作/模块/highgui/src/window.cpp, 第 331 行 Traceback(最近一次调用最后一次):文件 “/Users/vinayak/PycharmProjects/Python_test1/test_img.py”,第 4 行,在 cv2.imshow('image',img) cv2.error: /opt/concourse/worker/volumes/live/68762549-a7cd-401a-4fc4-6547354af396/volume/opencv_1512680491081/work/modules/highgui/src/window.cpp :331: 错误:(-215) size.width>0 && size.height>0 in function imshow

请帮我找出故障。提前致谢!

【问题讨论】:

Assertion failed (size.width>0 && size.height>0)的可能重复 【参考方案1】:

这个错误意味着你没有加载图像并且 img 是空的。

在 cv2 的 imread 中存在一个已知错误。您可以尝试用这部分替换 imread 调用:

import matplotlib.pyplot as plt
img = plt.imread('Test1.jpg')

matplotlib 在 cv2 上没有同样的错误。

【讨论】:

【参考方案2】:

代码是正确的,这是在 Python 中加载和显示图像 unsing OpenCV 的正确方法,您传递的附加参数 (0) 表示您将图像加载为灰度并且是枚举 cv 的数值.IMREAD_GRAYSCALE

opencv load image tutorial

link to enums

为了完整起见,这里是我测试的基本代码

    import cv2 as cv

    img = cv.imread('C:\\path\\to\\my\\Image\\image.bmp',0)
    cv.imshow('image',img)
    cv.waitKey(0)
    cv.destroyAllWindows()

因此,问题很可能与您传递给 cv.imread 函数的路径有关

您确定您的图像与您在同一个工作目录中吗 使用?(我敢打赌不是...) 您是否尝试使用完整的绝对路径更改您提供的相对路径 路径?

【讨论】:

以上是关于opencv 读取图像断言失败的主要内容,如果未能解决你的问题,请参考以下文章

haar 训练 OpenCV 断言失败

java opencv错误内存不足和断言失败

OpenCV 人脸检测 ROI 断言失败

OpenCV 错误断言在某些像素值上失败

使用 Opencv 时 C++ 调试断言失败

OpenCv 关于 rect ROI 的断言失败