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

OpenCV无法从URL读取图片,imshow报错(-215:Assertion failed)求助

解决OpenCV imshow报错(-215:Assertion failed)的问题

问题分析

你遇到的(-215:Assertion failed) size.width>0 && size.height>0 in function 'imshow'错误,本质是img变量为None——程序没能成功从URL加载图片,核心原因有两个:

  • OpenCV的cv2.imdecode不支持SVG矢量图格式,你请求的是SVG图片,无法被解码为有效的图像矩阵
  • url_to_image函数缺少错误处理和合法请求头,可能被服务器拦截;同时getColor函数存在缩进逻辑错误

修复方案

1. 替换为支持的图片格式

将SVG URL替换为对应的位图格式(如PNG/JPG),比如维基媒体提供的SVG缩略图PNG版本:

img = url_to_image("https://upload.wikimedia.org/wikipedia/commons/thumb/2/24/Solid_purple.svg/200px-Solid_purple.svg.png")

2. 优化URL图片获取函数

添加请求头避免被服务器拒绝,同时增加错误捕获逻辑:

def url_to_image(url):
    # 设置合法User-Agent,模拟浏览器请求
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}
    req = urllib.request.Request(url, headers=headers)
    try:
        resp = urllib.request.urlopen(req)
        image = np.asarray(bytearray(resp.read()), dtype='uint8')
        image = cv2.imdecode(image, cv2.IMREAD_COLOR)
        if image is None:
            raise ValueError("图片格式不支持,无法解码")
        return image
    except Exception as e:
        print(f"加载图片出错: {str(e)}")
        return None

3. 修复颜色匹配函数的逻辑错误

getColor函数中return语句缩进错误,导致第一次循环就返回结果,修正后:

def getColor(R,G,B): 
    minimum = 10000
    color_name = ""
    for i in range(len(csv)):
        distance = abs(R-int(csv.loc[i, 'R'])) + abs(G-int(csv.loc[i, 'G'])) + abs(B-int(csv.loc[i,'B']))
        if distance <= minimum:
            minimum = distance
            color_name = csv.loc[i, 'color_name']
    return color_name  # 放在循环外部,遍历所有颜色后返回最匹配的结果

4. 增加图片有效性判断

在调用imshow前检查图片是否加载成功:

img = url_to_image("https://upload.wikimedia.org/wikipedia/commons/thumb/2/24/Solid_purple.svg/200px-Solid_purple.svg.png")
if img is not None:
    cv2.imshow("image", img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()  # 释放窗口资源
else:
    print("图片加载失败,请检查URL或网络连接")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 01:57:18