(五)图像处理--颜色空间

目录

1、颜色空间转换

2、将图像转换到HSV空间,并设置HSV阈值范围

3、图像的放大和缩小


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阈值范围

步骤:

  1. 获取一幅图像
  2. 将图像转换到HSV空间
  3. 设置HSV的蓝色阈值范围
  4. 获取转换后的图像进行其他操作

代码:

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

效果图:

    

猜你喜欢

转载自blog.csdn.net/weixin_38664232/article/details/86541371