最近使用python的PIL图像包,发现有很多以前没有尝试的小技巧,图像处理工具真的好强大啊。

windows与linux的默认编码不一样,同一个系统内命令行的字符编码与直接脚本运行的编码也可以不一样,也就是说在某一系统下使用中文字符的路径,会导致报错,甚至不能识别,当然了如果你要读取文件里面的中文字符,那么可能有些更大的问题,需要进行字符编码的转换
有些不同版本的python也会有不同的反应,比如cv2.imread函数,这个函数可能在某些版本要求下不能接收中文路径,但某些版本可以,所以为了稳妥,建议大家路径都选为英文字符,cv2.imdecode则是其对应的老版本的实现。
参见
https://blog.csdn.net/sinat_36413257/article/details/104463741
https://blog.csdn.net/langb2014/article/details/100889815
https://blog.csdn.net/huitailangyz/article/details/81542198
https://blog.csdn.net/qq_38799933/article/details/105273681
http://www.zzvips.com/article/158906.html
神奇的是,PIL.Image.open函数则可以接收中文字符的路径。
参见:https://blog.csdn.net/sinat_36413257/article/details/104463741
https://blog.csdn.net/qq_38799933/article/details/105273681

当然了,很多人会说使用文件头编译命令,或者使用各种字符串修饰符,或者附加编码转换的方式以使用中文字符文件名或文件路径,很不靠谱,如:
https://blog.csdn.net/qq_23490365/article/details/100762184
https://blog.csdn.net/weixin_33416900/article/details/116179843
https://blog.csdn.net/weixin_39646021/article/details/112887191
https://blog.csdn.net/lilong117194/article/details/82563723
https://www.cnblogs.com/emanlee/p/14336685.html
https://www.jianshu.com/p/f3a320140b2c
https://blog.csdn.net/q6q6q/article/details/109343085
http://www.py.cn/faq/python/18643.html
https://www.cnblogs.com/saryli/p/4336140.html
https://blog.csdn.net/qq_16949707/article/details/73695090
https://blog.csdn.net/IAlexanderI/article/details/78355076
加一些修饰前缀可能还有点用
https://blog.csdn.net/churximi/article/details/50365151
https://blog.csdn.net/lilong117194/article/details/82563723

回到正题,Python PIL Image模块中有Open方法却没有Close方法!?
你经常会发现文件占用,删除不了,如:
https://blog.csdn.net/u014546828/article/details/108367409
https://my.oschina.net/u/4357381/blog/4542518
https://www.cnblogs.com/zzy0471/archive/2012/04/19/2456450.html
https://www.codenong.com/968ea45ad411d0e702e6/
https://blog.csdn.net/weixin_39743622/article/details/111793466
https://blog.csdn.net/weixin_31849265/article/details/112897820
https://blog.csdn.net/weixin_43196158/article/details/89144074

另外一个问题,我们在预处理图片的时候,一定要注意jpgJPGjpegJPEGPNG(是否为4通道),GIF文件的区别,我们自然是希望文件后缀都是jpg是最好,这里就需要文件格式转换:
老版本的cv2.imread基本上只能接受英文字符,当然也可能跟字符编码有挂你,这个时候得用其他版本,或者上面的cv2.imdecode等其他函数。不过cv2.imread还是可以读取png的,但是往往用PIL.Image.open进行操作,可能是因为png图片的特有性质。
https://blog.csdn.net/weixin_40446557/article/details/104059660
你可先判断后缀是否是jpg
https://blog.csdn.net/qq_16792139/article/details/111992488
gif的话,就略微复杂一点,并是分帧的。
https://www.cnblogs.com/easyidea/p/10520354.html

图像的resize函数就比较常见,与matlab很像。
https://blog.csdn.net/sunmingyang1987/article/details/100387031

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐