错误:(-215:断言失败)_step >= minstep in function 'cv::Mat::Mat'

Posted

技术标签:

【中文标题】错误:(-215:断言失败)_step >= minstep in function \'cv::Mat::Mat\'【英文标题】:error: (-215:Assertion failed) _step >= minstep in function 'cv::Mat::Mat'错误:(-215:断言失败)_step >= minstep in function 'cv::Mat::Mat' 【发布时间】:2021-04-20 10:43:50 【问题描述】:

当我在 python 中使用 opencv 时,如下所示:

LST_Day_1km = j.select('LST_Day_1km')[:]
if np.max(LST_Day_1km) != np.min(LST_Day_1km):
    d=np.array([LST_Day_1km,LST_Day_1km,LST_Day_1km])
    cv2.imwrite(savePath + i[:-4] + '.LST_Day_1km.tif', d)

LST_Day_1km 有多个零,其形状为 (1200,1200) 我能做些什么 ????!!! 这是错误: imwrite_('E:/pyCharm/ESRGAN/hdf_h5_datasPro/jpgGray/MOD11A1.A2000056.h23v04.061.2020043120949.LST_Day_1km.tif'):无法写入数据:OpenCV(4.5.1) C:\Users\appveyor\AppData\Local \Temp\1\pip-req-build-kh7iq4w7\opencv\modules\core\src\matrix.cpp:466: 错误:(-215:断言失败)_step >= minstep in function 'cv::Mat::Mat '

【问题讨论】:

【参考方案1】:

您可以使用:d = np.dstack((LST_Day_1km, LST_Day_1km, LST_Day_1km)),而不是 d = np.array([LST_Day_1km, LST_Day_1km, LST_Day_1km])

以下代码重现了错误:

import numpy as np
import cv2

LST_Day_1km = np.zeros((1200, 1200), np.uint8)  # 1200x1200 zeros (used for testing).
d = np.array([LST_Day_1km, LST_Day_1km, LST_Day_1km])
print(d.shape)  # d.shape = (3, 1200, 1200)
cv2.imwrite('LST_Day_1km.tif', d)

d.shape(3, 1200, 1200) 该形状未应用有效的 OpenCV 图像。

BGR 格式的有效 OpenCV 图像的形状是 (1200, 1200, 3)。 这是 1200 行 × 1200 列 × 3 个颜色通道(最后是 3 个)。


以下代码有效:

LST_Day_1km = np.zeros((1200, 1200), np.uint8)
d = np.dstack((LST_Day_1km, LST_Day_1km, LST_Day_1km))
print(d.shape)  # d.shape = (1200, 1200, 3)
cv2.imwrite('LST_Day_1km.tif', d)

您也可以使用 OpenCV 将 LST_Day_1km 从灰度转换为 BGR:

d = cv2.cvtColor(LST_Day_1km, cv2.COLOR_GRAY2BGR)  # Same result as `np.dstack`.

您也可以将LST_Day_1km 保存为灰度。 这是您修改后的代码 - 将 LST_Day_1km 保存为灰度:

LST_Day_1km = j.select('LST_Day_1km')[:]
if np.max(LST_Day_1km) != np.min(LST_Day_1km):
    cv2.imwrite(savePath + i[:-4] + '.LST_Day_1km.tif', LST_Day_1km)

【讨论】:

请修改。您的帖子说“代替 X 使用 X”(相同的 X) 已修改,谢谢。

以上是关于错误:(-215:断言失败)_step >= minstep in function 'cv::Mat::Mat'的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV 断言失败:(-215:断言失败)npoints >= 0 &&(深度 == CV_32F || 深度 == CV_32S)

OpenCV(4.5.2)/tmp/pip-req-build-sl2aelck/opencv/modules/imgproc/src/color.cpp:182:错误:(-215:断言失败)!_sr

错误:(-215:断言失败)!函数'cv :: CascadeClassifier :: detectMultiScale'中的empty()

尝试检测人脸时断言失败 215 错误

如何解决函数'resize'中的错误(-215:断言失败)!ssize.empty()?

CV2 图像错误:错误:(-215:断言失败)!ssize.empty() in function 'cv::resize'