目录
1、颜色空间转换
函数:cv2.cvtColor() , cv2.inRnage()
在OpenCV中有超过150种进行颜色空间转换的方法。但是我们常用的也就两种:BGR-->Gray和BGR-->HSV
函数:cv2.cvtColor(input_image,flag),其中flag就是转换类型
BGR-->Gray,flag就是cv2.COLOR_BGR2GRAY
BGR-->HSV,flag就是cv2.COLOR_BGR2HSV
可以通过以下的命令获得所有可用的flag:
import cv2
flags=[i for in dir(cv2) if i startswidth('COLOR_')]
print flags
注意:
在OpenCV的HSV格式中,H(色彩/色度)的取值范围是[0,179],S(饱和度)的取值范围是[0,255],V(亮度)的取值范围是[0,255]。不同软件使用的值可能不同。所以当你需要拿OpenCV的HSV值与其他软件的HSV值进行对比时,一定要记得归一化。
2、将图像转换到HSV空间,并设置HSV阈值范围
步骤:
- 获取一幅图像
- 将图像转换到HSV空间
- 设置HSV的蓝色阈值范围
- 获取转换后的图像进行其他操作
代码:
import numpy as np
import cv2 as cv
logoPath="C:\\Users\\Administrator\\Desktop\\picture\\logo.jpg"
logo=cv.imread(logoPath)
#转换到hsv
hsv=cv.cvtColor(logo,cv.COLOR_BGR2HSV)
#设定蓝色的阈值范围
low_blue=np.array([110,50,50])
upper_blue=np.array([130,255,255])
#根据阈值构建掩膜
mask=cv.inRange(hsv,low_blue,upper_blue)
#对原图像和掩膜进行与运算
result=cv.bitwise_and(logo,logo,None,mask=mask)
#显示图像
cv.imshow("logo",logo)
cv.imshow("hsv",hsv)
cv.imshow("mask",mask)
cv.imshow("result",result)
cv.waitKey()
运行结果:
3、图像的放大和缩小
函数:cv2.resize(src,dsize,fx,fy,interpolation)
代码:
import numpy as np
import cv2 as cv
path="D:\\openCV\\opencv\\sources\\samples\\data\\lena.jpg"
lena=cv.imread(path)
#下面的None本应该是输出图像的尺寸,但是后边设置了缩放因子,因此这里为None
res=cv.resize(lena,None,fx=0.5,fy=0.5,interpolation=cv.INTER_CUBIC)
cv.re
#直接设置输出图像的尺寸,所以不用设置缩放因子
#height,width=lena.shape[:2]
#res2=cv.resize(lena,(1*width,1*height),interpolation=cv.INTER_CUBIC)
cv.imshow("source",lena)
cv.imshow("res", res)
#cv.imshow("res2", res2)
cv.waitKey()
注意:
这里是缩小0.5倍,如果要方法将fx,fy设置为正数即可
#下面的None本应该是输出图像的尺寸,但是后边设置了缩放因子,因此这里为None
效果图: