【问题标题】:error: OpenCV(4.1.2) /io/opencv/modules/imgcodecs/src/loadsave.cpp:715: error: (-215:Assertion failed) !_img.empty() in function 'imwrite'错误:OpenCV(4.1.2)/io/opencv/modules/imgcodecs/src/loadsave.cpp:715:错误:(-215:断言失败)!_img.empty()在函数“imwrite”中
【发布时间】:2020-04-22 08:18:01
【问题描述】:

我正在尝试将图像的一部分保存在边界框内,如下所示:

digit = thresh[x:x+w,y:y+h]
cv2.imwrite(str(c)+'.png',digit)

但我收到以下错误。

error: OpenCV(4.1.2) /io/opencv/modules/imgcodecs/src/loadsave.cpp:715: error: (-215:Assertion failed) !_img.empty() in function 'imwrite'

需要你的帮助。

【问题讨论】:

  • 这可能意味着您尝试保存空数组。首先检查您在digit 中的内容。为此使用print()。您还可以检查x,y,w,h - 也许w 和/或h 为零。
  • A 已经绘制了数字,它向我显示了我裁剪的数字图像,但是当尝试编写它时,它显示了问题中的错误。
  • 在两行代码中,这个错误我只能说一个:digit 是空的。我不知道这两行之间是否还有更多内容,但也许您在写入之前将新的空数组分配给digit。只有你知道你所有的代码,只有你可以在imwrite之前直接使用print()来检查你在digit中的内容
  • 顺便说一句:如果你运行cv2.imwrite('img.png', np.array([])),那么你会得到同样的错误——因为数组是空的。如果您向数组添加至少一个值 - 即。 np.array([1]) - 然后它可以正常工作。

标签: python python-3.x image opencv image-processing


【解决方案1】:

'x' 或 'y' 超出了我们的 'thresh' 数组的范围 大多数情况下,它将处于负值。 解决方案是

x=max(0,x)
y=max(0,y)

【讨论】:

    猜你喜欢
    • 2020-08-11
    • 2016-08-10
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 2021-04-14
    • 2019-12-04
    • 2021-09-10
    • 1970-01-01
    相关资源
    最近更新 更多