1、首先建议大家入门学习的时候,文件名称和目录全部用英文,说3遍,说3遍,说3遍!
2、opencv读取中文路径的时怎么办?
3、如将lenargb.jpg的路径设置为 "E\陈\lenargb.jpg"
#引入opencv模块
import cv2 as cv
#查看opencv的版本
print(cv.__version__)
#读取图片
img = cv.imread('E:\陈\lenargb.jpg')
#判断是否读取成功
if img is None:
print("Could not read the image,may be path error")
#显示图像
cv.imshow("Display window", img)
#让显示等待键盘输入维持在那里,否则程序跑完就闪退啦!
cv.waitKey(0)
#销毁窗口
cv.destroyAllWindows()
程序运行会报错,很明显imread不支持中文路径
![]()
4、中文路径的解决方法1
img=cv.imdecode(np.fromfile('E:\陈\lenargb.jpg',dtype=np.uint8),cv.IMREAD_UNCHANGED)
测试代码如下:
#引入opencv模块
import cv2 as cv
#引入numpy模块
import numpy as np
#查看opencv的版本
print(cv.__version__)
#读取图片
#img = cv.imread('E:\陈\lenargb.jpg')
#打开含有中文路径的图片
img=cv.imdecode(np.fromfile('E:\陈\lenargb.jpg',dtype=np.uint8),-1)
#img=cv.imdecode(np.fromfile('E:\陈\lenargb.jpg',dtype=np.uint8),cv.IMREAD_UNCHANGED)
#判断是否读取成功
if img is None:
print("Could not read the image,may be path error")
#显示图像
cv.imshow("Display window", img)
#让显示等待键盘输入维持在那里,否则程序跑完就闪退啦!
cv.waitKey(0)
#销毁窗口
cv.destroyAllWindows()
5、imdecode的参数说明
img = cv.imdecode(np.fromfile(img_path, dtype=np.uint8), -1) # 读入完整图片,见下面解释
img = cv.imdecode(np.fromfile(img_path, dtype=np.uint8), 0) # 读成灰度
img = cv.imdecode(np.fromfile(img_path, dtype=np.uint8), 1) # 读成彩图
其中cv2.imdecode后面的flag -1应该是和cv2.imread一样的,但是要带上
使用函数cv2.imread(filepath, flags)读入一幅图片:
filepath: 要读入图片的路径。
flags: 读入图片的标志:
cv2.IMREAD_UNCHANGED(-1): 顾名思义,读入完整图片,包括alpha通道。如果数据不含alpha通道则灰图读成(H, W),彩图读成(H, W, 3)。
cv2.IMREAD_GRAYSCALE(0): 读入灰度图片,形状为(H, W)。彩图也读成灰的形状。
cv2.IMREAD_COLOR(1): 默认参数
本文介绍了解决OpenCV在Python中无法直接读取包含中文路径的图片的问题,并提供了一种有效的替代方案,即通过numpy模块结合cv2.imdecode来实现。

2258

被折叠的 条评论
为什么被折叠?



