如何修复使用opencv-python转图片为素描时出现的cv2.error: OpenCV(4.5.4-dev)报错
OpenCV cvtColor转灰度报错修复方案
- 排查图片读取是否成功
cv2.imread读取不存在、路径含中文、权限不足的图片时会直接返回None,传入cv2.cvtColor就会触发报错。你可以在报错行前加入校验代码,路径建议使用绝对路径,Windows路径使用正斜杠/或者双反斜杠\\即可:import cv2 image = cv2.imread("C:/Users/xxx/Desktop/test.jpg") # 必须包含中文路径时使用下方兼容写法 # import numpy as np # image = cv2.imdecode(np.fromfile("包含中文的测试图.jpg", dtype=np.uint8), cv2.IMREAD_COLOR) if image is None: print("图片读取失败,请检查路径、权限是否正确") else: grey_img = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) - 校验输入图片的通道属性
如果输入的image本身就是单通道灰度图,调用COLOR_BGR2GRAY会因为通道数不匹配报错。你可以先打印图片维度确认:print(image.shape)
若输出仅包含(高度, 宽度)两个数值,说明图片已经是灰度格式,直接跳过cvtColor转换步骤即可。 - 检查依赖版本兼容性
部分opencv-headless版本或者过高/过低的版本会出现接口异常,可执行命令重装稳定版:pip uninstall opencv-python opencv-python-headless -y pip install opencv-python==4.5.5.62 - 校验输入数据格式
如果你是用PIL、matplotlib等其他库读取的图片传入接口,需要先转换为cv2兼容的BGR通道顺序、uint8数据类型,否则也会触发报错。
内容的提问来源于stack exchange,提问作者CHASSIE
相关产品推荐
相关产品推荐

