cv2.error: OpenCV(4.5.4-dev) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.cpp:1
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.jpg
、flower.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")
这种形式的,或者我们喜欢使用这样的读取方式,但更想将代码分类存放成多级目录。我们可以进行简单的设置:
- 点击运行 => 打开配置(没有的话点击添加配置)
- 这时会在
.vscode
文件夹中新增出launch.json
的文件,我们可以添加一个cwd
参数配置,如下复制粘贴即可:
"cwd": "${fileDirname}"
注意上一行末尾,加上逗号
,
。
这样的配置意味着,你需要像在 Jupyter notebook 中那样写代码,即:你的代码中的要读取的文件是和你当前代码在同一文件夹下的。
你的代码几乎将不能写成 cv2.imread(./python/code_001/test.jpg",1)
,因为此时你已经配置你的代码所在文件夹作为根目录了。
更多推荐
所有评论(0)