图片处理两兄弟PIL和OpenCV
Posted 咕里个咚
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图片处理两兄弟PIL和OpenCV相关的知识,希望对你有一定的参考价值。
还记上篇我们安装了anaconda+torch+opencv,但是对opencv我基本没怎么提到它,在这里要给他陪个不是了,然后在这里隆重的介绍一下它,撒花,以及它的好兄弟PIL,不是PLC哦,也不是PCL哦,别混淆了。
在这之前,我提供一张一会要用到的图片,咩咩狗
怎么说呢,那就是爆炸的可爱输出啊
至于为什么叫咩咩呢?这是一个有趣的爱情故事,本人不才,有个女朋友,她想养一只羊,我是一个使命必达的男朋友,然后买了一条狗取名叫咩咩,人送外号,感动哥,哭吧,这世界还能有我这么爱女朋友的人吗?有吗?
读图上的比较:我们分别用PIL和opencv读图一下或者说读一下图,先对比一下读出来的数据类型是什么,上图
你猜猜会是什么样的?别猜了,试一下就知道了,实践是检验真理的唯一标准,上图
可以明显的看到opencv是numpy格式的,而PIL是<class 'PIL.PngImagePlugin.PngImageFile'>这玩意,害,反正就是不一样
你可能要问了,这个格式能转换成一样吗,答案是,能,肯定能,一定能,上图
这是opencv转PIL
这是PIL转opencv
获取图像宽,高,通道数的比较:
知识点,敲黑板,敲黑板,敲黑板:
1.opencv的图片用shape,会返回三个值,分别是高,宽,通道数
2.PIL的图片用size,返回两个值,分别是宽,高
如果你没发现的话,我提醒你一下,PIL和opencv返回的值中,宽高的顺序是不一样的,OpenCV先高再宽,PIL先宽在高,都是知识点啊
3.PIL的图片的通道数的获取用len(pil_image.split()),就是这么与众不同,就是这么特立独行
通道顺序和读取值的比较
首先,一般图片是3个通道的,分别是r,g,b,rgb啥意思呢?red,green,blue,我的英语水平极佳,只能这么说吧,也有单通道的,也有4通道的,严谨
我们来打印一下opencv读出来图的数值
再来打印一下PIL读出来的图的数值
你发现了什么吗?你肯定发现了,但是发现全了吗?
1.通道的循序不一样,通过看值就能看出来了吧,opencv第一行是91 157 216 而PIL第一行是216 157 91,这是啥意思呢?回答:opencv读图的通道顺序是bgr,PIL是rgb,嗯,不错不错
2.再看倒数第三行,opencv是223 247 253 PIL是253 247 221,发现不仅顺序不一样,值还不一样,咋回事?别慌,正常正常,223和221这点差距才多大,默默接受吧,没什么大影响。
这两兄弟的对比就差不多了,这里有什么不对的地方,我还是接受反驳的,但是我不负责任。
至此,敬礼,salute。
以上是关于图片处理两兄弟PIL和OpenCV的主要内容,如果未能解决你的问题,请参考以下文章
torchvision中的resize对PIL.Image对象的处理速度要优于opencv近7千倍
torchvision中的resize对PIL.Image对象的处理速度要优于opencv近7千倍
Python PIL调整图片大小尺寸和转换图片格式,removebg改变图片背景透明化处理