多平台统一管理软件接口,如何实现多平台统一管理软件接口
324
2022-08-24
Python之使用PIL实现cv2(python pil库)
有时候使用cv2需要安装opencv,但是opencv安装比较麻烦,因为需要编译过程。
所以,我们可以使用PIL对cv2的一些常用接口进行复现。
这里我们实现了cv2的imread(), imwrite(), resize(), cvtColor() 共四个接口。
实现代码如下:
import PILfrom PIL import Imageimport numpy as npdef imread(filename): img = np.array(Image.open(filename)) if len(np.shape(img)) == 3: return img[:,:,::-1] else: return imgdef imwrite(filename, img): if len(np.shape(img)) == 3: img = Image.fromarray(img[:,:,::-1]) else: img = Image.fromarray(img) img.save(filename)def resize(img,size, interpolation = PIL.Image.LANCZOS): # PIL.Image.NEAREST, PIL.Image.BILINEAR , PIL.Image.BICUBIC, PIL.Image.LANCZOS if len(np.shape(img)) == 3: return np.array(Image.fromarray(img[:,:,::-1]).resize(size,resample = interpolation))[:,:,::-1] else: assert len(np.shape(img)) == 2 return np.array(Image.fromarray(img).resize(size,resample = interpolation))def cvtColor(img, mode): # mode: 'COLOR_BGR2GRAY', 'COLOR_GRAY2BGR' if mode == 'COLOR_BGR2GRAY': assert len(np.shape(img)) == 3 img = Image.fromarray(img[:,:,::-1]) return np.array(img.convert(mode = 'L')) if mode == 'COLOR_GRAY2BGR': assert len(np.shape(img)) == 2 return np.repeat(img[:, :, np.newaxis], 3, axis=2) return
黄世宇/Shiyu Huang's Personal Page:https://huangshiyu13.github.io/
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~