opencv Image等操作在win下的坑
好久没有在win下写东西了。导致又一次踩到了坑里。
1. PIL库读图,转为numpy:np.array()
2. opencv读入的图像是BGR格式,转为RGB:img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
3. opencv保存时,路径不能是中文!!!否则不报错但是也保存不了!!!
4. 保存图片的路径:'D:/Face Recognition/CASIA-WebFace-aligned',注意是 /,\\也行,但是有个潜在的问题,利用os.path.join()后,路径会自动变成 \ 。这也不报错,但也保存不了图片!!!所以保存时要使用 / ,并且不要使用os.path.join()!!!
5. matpotlib.pyplot保存Image读入的图为jpg格式时会报错:RGBA不能存为RGB! 所以只能存为png格式。但是利用cv2.imwrite可以保存。
6. 读入图片时,要注意有的图像可能是1通道的灰度图。这时如果要训练的话,3通道和1通道无法构成批量来训练。解决方法:使用cv2读入,默认是3通道。如果利用PIL的Image,可以这样写:
img = Image.open(self.root+'/'+img_path).convert('RGB')
或者手动复制三个通道修改成3通道图像:
img = np.stack([img]*3, 2)
其他:
Convert RGBA PNG to RGB with PIL
Python PIL.Image.open() Examples (里面是一些用到PIL库的一些项目代码,比较全面)