cv2.error: OpenCV(4.5.4-dev) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.cpp:1

使用 opencv 读取图片时可能遇到报错信息如下:

cv2.error: OpenCV(4.5.4-dev) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.cpp:1

这种问题大概率是文件路径出问题了。
PS:报错原因尚未查阅过官网,以下分析仅由试验得出。

可能原因以及解决方法:

图片路径中存在中文:

这个只需要检查一下路径并更改就行了。

建议文件,文件夹的命名规范和 python 的命名规范一直。

文件(图片)存在问题

文件名错误
filename的文件包括文件扩展名,应该是类似于flower.jpgflower.png 的形式,而非单纯的flower

IDE的配置:
假如你的代码是迁移过来的,很可能因为你使用的和本来代码的IDE 不同而出现这样的问题。

Jupyter notebook
如果使用的是 Jupyter notebook。Jupyter notebook 的文件读取路径是默认从代码所在的文件夹作为根目录的。
简言之,就是代码和图片在同一个目录,你可以使用cv.imread(‘flower.jpg’) 。
假如代码和「img」文件夹在同一目录,即这种形式:

├─opencv_learn.py
├─img
│  ├─flower.jpg

你需要这样写:cv.imread("img/flower.jpg")

VScode
VScode 的文件读取路径一般是从当前的工作区(资源管理器的一级文件夹)开始作为根目录。也就是你创建(打开)的文件夹。

比如下图:演示
此时打开的是序号为「1」的文件夹,代码是序号「3」中的文件,cv2.imread("test.jpg",1) 读取的路径是单纯的图片名,那应该从序号「1」的文件夹中进行寻找,而一级文件夹下是找不到 test.jpg 该文件的,因此会报错。

如果你打开的文件夹(也就是一级文件夹)更换为序号「3」所在的文件夹 ——「code_001」,那么你运行代码大概率是没有问题的。VScode会从此时打开的文件夹(也就是code_001)中进行寻找。

在VScode 中,如果你迁移过来的代码读取方式都是单纯的图片名cv.imread("flower.jpg") 这种形式的,或者我们喜欢使用这样的读取方式,但更想将代码分类存放成多级目录。我们可以进行简单的设置:

  1. 点击运行 => 打开配置(没有的话点击添加配置在这里插入图片描述
  2. 这时会在 .vscode 文件夹中新增出 launch.json 的文件,我们可以添加一个cwd参数配置,如下复制粘贴即可:
"cwd": "${fileDirname}"

在这里插入图片描述

注意上一行末尾,加上逗号 ,

这样的配置意味着,你需要像在 Jupyter notebook 中那样写代码,即:你的代码中的要读取的文件是和你当前代码同一文件夹下的。
你的代码几乎将不能写成 cv2.imread(./python/code_001/test.jpg",1) ,因为此时你已经配置你的代码所在文件夹作为根目录了。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值