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

Python OpenCV执行cvtColor报错(-215:Assertion failed)问题求助

异常D盘路径说明

报错中出现的D:\a\opencv-路径是OpenCV官方预编译包在构建阶段的服务器路径,和你本地设备的磁盘配置无关,属于编译时内置的日志信息,不属于异常问题,无需额外处理。

报错核心原因

(-215:Assertion failed) _step >= minstep 断言错误的本质是传入cv.cvtColor的 numpy 数组内存布局不符合OpenCV的Mat结构要求,结合你的代码场景具体触发原因如下:

  • pyautogui的screenshot返回PIL图像,转换为numpy数组时,小尺寸图像(比如你测试用的1*1分辨率)会生成非连续内存步长的数组,OpenCV无法直接解析这类数组
  • 你当前使用的4.5.4-dev是OpenCV开发测试版本,本身存在较多兼容性bug,对边缘场景的输入容错性更低

解决方法

你可以任选以下任意一种方案解决问题:

  • 强制将numpy数组转为连续内存布局:在image = np.array(image)代码后新增一行image = np.ascontiguousarray(image),即可适配OpenCV的格式要求
  • 更换稳定版OpenCV依赖:卸载当前开发版opencv-python,安装正式稳定版本,执行以下命令即可:
    pipenv uninstall opencv-python
    pipenv install opencv-python==4.5.5.62
  • 小尺寸图像特殊处理:如果仅需处理极小尺寸的截图,可直接用numpy切片交换通道,不需要调用OpenCV的cvtColor接口:image = image[..., [2,1,0]]

修复后完整代码示例

import cv2 as cv
import numpy as np
import pyautogui as pg


def make_screenshot(x=0, y=0, x_length=1920, y_length=1080, debug=False):
    image = pg.screenshot(region=(x, y, x_length, y_length))
    image = np.array(image)
    # 新增行:强制转换为连续内存数组
    image = np.ascontiguousarray(image)
    image = cv.cvtColor(image, cv.COLOR_RGB2BGR)
    if debug:
        cv.imshow('test', image)
        cv.waitKey()
    return image


print(make_screenshot(0, 0, 1, 1, False))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:54:05