Loading... # python图像读取 `用于记录` python图像读取的方式主要是opencv,PIL。 --- # opencv读取 opencv在图像处理方面,感觉应该是用的最广泛的包了。 ```python import cv2 #读取照片,英文路径 img=cv2.imread("data/00000.png") #默认类型是ndarray,也就是numpy可以直接操作 print(img.dtype) h,w,c=img.shape ##显示图片 # cv2.imshow("window",img) # cv2.waitKey(0) #保存图片,英文路径 cv2.imwrite("data/00000out.png",img) ``` **输出** ```python uint8 False ``` ## 读取灰度图或4通道图 ```python # cv2.imread存在标志位 # cv2.IMREAD_COLOR,cv2.IMREAD_GRAYSCALE,cv2.IMREAD_UNCHANGED print(cv2.IMREAD_COLOR,cv2.IMREAD_GRAYSCALE,cv2.IMREAD_UNCHANGED) #彩色图 img=cv2.imread("data/00000.png",flags=1) #灰度图 img=cv2.imread("data/00000.png",flags=0) #包含alpha通道 img=cv2.imread("data/00000.png",flags=-1) #如果是rgb那还是3通道 ``` **输出** ```python 1 0 -1 ``` ## opencv读取中文路径正确方式 ```python import cv2 import numpy as np #采用 cv2.imdecode 读取图片 #错误方式 img1=cv2.imread("data/中文路径/00000.png") print("1",img1==None) #正确方式 array = np.fromfile("data/中文路径/00000.png",dtype=np.uint8) img = cv2.imdecode(array,flags=1) print("2",img==None) ## 采用 cv2.imencode 保存图片 #错误方式 print(cv2.imwrite("data/中文路径/00000out.png",img)) #正确方式 arr = cv2.imencode(".png",img) arr[1].tofile("data/中文路径/00000out.png") ``` **输出** ```python 1 True 2 [[[False False False] [False False False] [False False False] .... False ``` # PIL PIL在深度学习数据增强中用到了不少,也是一个经常使用到的包 ```python from PIL import Image import numpy as np #读取图片,中英文路径都行 im = Image.open("data/中文路径/00000.png") print(im) #不能numpy直接处理,不是numpy数组 #转成numpy im_array = np.array(im) #从numpy转回 Image.fromarray(im_array.astype('uint8')).convert('RGB') #保存图片 ,中英文路径都行 im.save("data/中文路径/00000out.png") ``` **输出** ```python <PIL.PngImagePlugin.PngImageFile image mode=RGB size=512x512 at 0x22278E4A580> ``` 最后修改:2025 年 02 月 22 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏