You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用cv2.resize后输出为None?遇imshow断言失败错误求助

OpenCV调整图像尺寸后imshow断言失败&resize返回None问题解决

我用以下Python代码尝试用cv2.resize调整图像尺寸并通过cv2.imshow显示,运行时触发断言失败错误,同时疑惑cv2.resize的输出为何是None。

代码:

import cv2
img = cv2.imread("data/sample.jpg")
if img is not None:
    img1 = cv2.resize(img, (500, 500))
    cv2.imshow("My demo", img1)
else:
    print("Unable to load image")

错误信息(翻译后):

cv2.error: OpenCV(4.6.0) /Users/xperience/actions-runner/_work/opencv-python/opencv-python/opencv/modules/highgui/src/window.cpp:967: error: (-215:断言失败) size.width>0 && size.height>0 于函数 'imshow' 中

问题原因及解决办法

  • 核心问题:断言失败说明imshow接收的图像宽高至少有一个不大于0,而resize返回None的唯一可能是输入的原始图像本身异常——哪怕过了img is not None的判断,也可能是图像加载后尺寸无效(比如宽/高为0),或者图像文件损坏。

  • 具体排查与修复步骤:

    1. 检查原始图像尺寸:在调用resize前打印图像的形状,确认输入是否有效:
      print(img.shape)  # 正常输出应为(高度, 宽度, 通道数),例如(1080, 1920, 3)
      
      如果输出的宽或高为0,说明图像文件损坏,更换正常图片测试。
    2. 验证resize结果有效性:给调整后的图像加有效性判断,避免无效图像传入imshow:
      img1 = cv2.resize(img, (500, 500))
      if img1 is not None and img1.shape[0] > 0 and img1.shape[1] > 0:
          cv2.imshow("My demo", img1)
          cv2.waitKey(0)  # 必须添加,否则窗口会瞬间关闭
          cv2.destroyAllWindows()
      else:
          print("调整尺寸后的图像无效")
      
    3. 补充imshow的必要操作:原代码缺少cv2.waitKey(0)和cv2.destroyAllWindows(),这两个函数是保证窗口正常显示的关键——不加waitKey窗口会立刻关闭,甚至触发异常。
    4. 确认图像路径正确性:虽然img is not None,但可以改用绝对路径排查相对路径的工作目录问题:
      import os
      img_path = os.path.abspath("data/sample.jpg")
      print(img_path)  # 打印绝对路径,确认文件确实存在
      img = cv2.imread(img_path)
      

内容的提问来源于stack exchange,提问作者San05KITS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 04:13:02