基于Pyhton的Opencv学习

基于Python的Opencv学习第五天

各位小伙伴们大家好,今天是我学习Opencv的第五天,来看看今天的学习内容吧。

一.图像类型转换

这次我先来介绍一下在opencv里面如何实现图像类型转换,首先这个概念很容易懂,就是将图像由一种类型转换成另外一种类型。

在opencv中有超过200种图像的类型转换,在今天我就介绍几个常见的类型转换,如:从原始图像转换到灰度图像,从BGR类型图像转换成RGB类型图像,或者灰度图像转换成BGR图像以及RGB图像,总之就是几个不同类型的图像的相互转换。
在不同类型的图像转换中,我们需要调用的函数是:

cv2.cvtColor(图像名,需要转换的类型参数)

在这里,需要转换的类型参数有
cv2.COLOR_BGR2GRAY
cv2.COLOR_BGR2RGB
cv2.COLOR_GRAY2BGR

其实不难看出这个参数就是cv2.COLOR_后面加上需要转换的两种类型的英文。

来看看代码和实现结果:

>>> import cv2
>>> a=cv2.imread(r"C:\Users\LT010407\Desktop\2.jpg")
>>> b=cv2.cvtCOLOR(a,cv2.COLOR_BGR2GRAY)
>>>> b=cv2.cvtColor(a,cv2.COLOR_BGR2GRAY)
>>> cv2.imshow("a",a)
>>> cv2.imshow("b",b)

在这里插入图片描述
在这里我们是将RGB图像转换成了GRAY图像,接下来看看将GRAY转换成RGB的效果。

具体代码很简单只要给b=cv2.cvtColor(a,cv2.COLOR_BGR2GRAY)换成c=cv2.cvtColor(b,cv2.COLOR_GRAY2RGB)从而得到一个新的c图像是从b的灰度图像转到RGB图像的。

在这里插入图片描述

但是我们会发现,从灰度图像到RGB图像好像没有体现出来很大的变化,看上去两者是一摸一样,但是来看一下RGB的shape属性就知道了:

在这里插入图片描述
这里我们看到shape属性有三个通道,所有的确是RGB图像,只不过和灰度图像差别不会很明显。

二.图像缩放

我们继续讲一下opencv中对图像进行的缩放处理,这里我们需要运用到resize()函数,来看具体语法格式:

dst=cv2.resize(src,dsize[,dst[,fx[,fy[,interpolation]]]])

在这里面有两个参数是必备的,所以最简单的代码格式是:
dst=cv2.resize(src,dsize)

这里src代表原始图像,即我们需要进行处理的图像
而dsize代表着缩放大小,也就是我们想要进行处理
图像的缩放大小。

示例:b=cv2.resize(a,(122,122))

这里值得注意的是第一个122代表着不管原图像是多少列组成,我们都给缩放到122列,第二个122代表着我们给缩放到122行,即第一个数字代表列,第二个数字代表行。

除了最简单的代码格式,我们还可以用另外一种格式来进行图像缩放:
dst=cv2.resize(src,dsize,fx,fy)

这里fx指对水平方向进行缩放多少倍,fy指对竖直方向上进行缩放多少倍,这里两个数值均和“1”比较。值得注意的是dsize需要写入值为None。

示例:b=cv2.resize(a,None,fx=0.5,fy=0.7)

分别在水平方向上缩小到原来的0.5倍,竖直方向上缩小到原来的0.7倍。
这里我们看到dsize和fx,fy只要设置其中的一组即可,不需要多设置。

来看一下代码和结果展示:

>>> import cv2
>>> a=cv2.imread(r"C:\Users\LT010407\Desktop\2.jpg")
>>> b=cv2.resize(a,(200,100))
>>> cv2.imshow("a",a)
>>> cv2.imshow("b",b)
>>> 

在这里插入图片描述

这里我们可以看到b图像为缩小到只有200列,100行,对比就能理解resize()函数的用法和功能。

>>> import cv2
>>> a=cv2.imread(r"C:\Users\LT010407\Desktop\2.jpg")
>>> rows,cols=a.shape[:2]
>>> size=(round(cols*0.5),round(rows*1.5))
>>> b=cv2.resize(a,size)
>>> cv2.imshow("b",b)

这里我用了元组的形式来书写代码,来看看结果吧:
在这里插入图片描述
接下来我们不用dsize,而是用fx,fy,来看看吧。

>>> import cv2
>>> a=cv2.imread(r"C:\Users\LT010407\Desktop\2.jpg")
>>> c=cv2.resize(a,None,fx=0.5,fy=1.3)
>>> cv2.imshow("c",c)
>>> cv2.imshow("a",a)
>>> 

在这里插入图片描述
在这里虽然用来三种方法来给大家展示图像的缩放,但其实都离不开一个函数resize(),所以大家只要能够弄明白函数里面每一个参数的含义就能彻底搞定图像的缩放。

三.图像翻转

刚刚讲完了图像的缩放,我们还能在opencv里面对图像进行翻转,我们需要用到flip()函数,具体格式如下:

dst=cv2.flip(src,flipCode)

老规矩,src指我们需要进行翻转的图像

flipCode指我们需要如何进行翻转,这里flipCode有三种数据,分别为:

flipCode=0 以x轴为对称轴翻转(即上下翻转)
flipCode>0 以y轴为对称轴翻转(即左右翻转)
flipCode<0 以x轴和y轴为对称轴翻转(即上下翻转加左右翻转)

来看看代码和结果:

>>> import cv2
>>> a=cv2.imread(r"C:\Users\LT010407\Desktop\2.jpg")
>>> b=cv2.flip(a,0)
>>> c=cv2.flip(a,1)
>>> d=cv2.flip(a,-1)
>>> cv2.imshow("a",a)
>>> cv2.imshow("b",b)
>>> cv2.imshow("c",c)
>>> cv2.imshow("d",d)
>>> 

在这里插入图片描述
在这里插入图片描述

这里我们可以看到分别进行了上下翻转,左右翻转,以及上下,左右翻转都进行,图片展示如上两幅图。

今天分别讲述了图像的缩放和图像的翻转,都是两个简单的函数,理解也不太难。那么今天就到这里了,我们下一篇博客见!(转载注明出处)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值