图片处理两兄弟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等比例压缩与质量处理图片

Python PIL调整图片大小尺寸和转换图片格式,removebg改变图片背景透明化处理

OpenCV—Python PyLibTiff_psd 图像基本操作以及图像格式转换

PIL.Image.open 与 cv2.imread 读取的图片在像素点上不一致