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

Python中未导入图像画线方法及OpenCV imshow报错解决方案

嘿,我来帮你搞定这两个问题:

问题1:如何在Python中给未导入的图像绘制直线?

其实完全不需要导入外部图像就能绘图——你可以直接创建一张空白画布(也就是像素矩阵)来操作。具体步骤很直观:

  • 用numpy.zeros()创建指定尺寸、通道数的空白图像,比如你代码里的np.zeros((512,512,3),np.uint8),就是生成了一张512×512的3通道彩色空白图(初始全黑)
  • 调用cv.line()在这张空白图上绘制直线
  • 最后用cv.imshow()展示结果

你的代码其实已经在这么做了,只是后面遇到了报错小问题~

问题2:修复imshow的报错问题

你碰到的error: (-215) size.width>0 && size.height>0报错,核心原因是cv.imshow()接收到的图像是无效的(空值或者尺寸不对)。结合你说“画线前可正常显示”的情况,问题肯定出在cv.line()的赋值操作上。

看你这段代码:

img=cv.line(img,(0,0),(300,300),(0,0,255),4)

这里的坑在于:OpenCV的cv.line()是直接在传入的图像上做修改的,它的返回值其实是None。你把这个None赋值回img,等于把原本好好的空白图像给覆盖成空值了,cv.imshow()自然就报错了。

修复方法超简单,去掉赋值就行:

# 直接调用函数修改原图像,不用把返回值赋值给img
cv.line(img,(0,0),(300,300),(0,0,255),4)

修复后的完整代码如下:

import numpy as np
import cv2 as cv

# 创建512×512的3通道彩色空白图
img = np.zeros((512,512,3), np.uint8)
# 在空白图上绘制从(0,0)到(300,300)的红色直线,线宽4
cv.line(img, (0,0), (300,300), (0,0,255), 4)
# 展示图像
cv.imshow('draw', img)
cv.waitKey(0)
# 释放窗口资源,避免程序结束后窗口残留
cv.destroyAllWindows()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:17:59