python获取图像(Python——读取中文路径图像文件)

首页常识更新时间:2022-11-29 07:46:17

在项目中,经常需要读取和显示图像文件,常见的读取图像文件有三种方式:

1、Opencv.2、PIL 3、matplotlib

这三种图像文件读取方式及基本用法,可以参看前期文章:

#包含有中文名称的图像文件 imgfiles=["cat.jpg","dog.jpg","小狗.jpg","小猫.jpg"]

#引入库 import cv2 import numpy as np import os from PIL import Image import matplotlib.pyplot as plt import matplotlib.image as mpimg

cat.jpg

dog.jpg

小猫.jpg

小狗.jpg

#PIL读取l中文路径图像并显示 imgpath=os.path.join("img",imgfiles[2]) imgpil=Image.open(imgpath) print(imgpil) plt.imshow(imgpil) plt.show() #mpimg 读取l中文路径图像并显示 imgmp=mpimg.imread(imgpath) plt.imshow(imgmp) plt.show()

结果:正常

这两种读取中文路径图像文件都没有问题,下面使用opencv来读取中文路径的图像文件,看一下情况:

imgpath=os.path.join("img",imgfiles[2]) imgcv=cv2.imread(imgpath) print(img) print(imgcv.shape)

结果运行报错如下信息:

print(img.shape)
AttributeError: 'NoneType' object has no attribute 'shape'

img输出结果为:None

说明OpenCV读取中文路径图像文件这种方式不行。

解决办法:其实就是先把图像文件数据写入内存,再从内存解码。

img=cv2.imdecode(np.fromfile(imgpath,dtype=np.uint8),cv2.IMREAD_COLOR) print(img.shape) cv2.namedWindow("img", cv2.WINDOW_NORMAL) cv2.imshow("img", img) cv2.waitKey(0) cv2.destroyAllWindows()

输出结果:(421, 500, 3)

,
展开阅读全文
推荐内容
热门内容
热门文章

© 2007-2022 http://www.anhuiqq.cn,All Rights Reserved.