版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fly_wt/article/details/83277255
1. 色彩空间转换API
常见的色彩空间:
- RGB
- HSV
- YUV
- YCbCr
如下demo
import cv2 as cv
def converce_color_space(img):
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
cv.imshow('gray iamge', gray)
hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV)
cv.imshow('hsv image', hsv)
yuv = cv.cvtColor(img, cv.COLOR_BGR2YUV)
cv.imshow('yuv image', yuv)
YCbCr = cv.cvtColor(img, cv.COLOR_BGR2YCrCb)
cv.imshow('YCbCr image', YCbCr)
image = cv.imread("./image/CR.jpg", 1)
converce_color_space(image)
cv.waitKey(0)
cv.destroyAllWindows()
显示图像为:
2.inRange函数提取指定颜色
一般对颜色空间的图像进行有效处理都是在HSV空间进行的,然后对于基本色中对应的HSV分量需要给定一个严格的范围,下面是通过实验计算的模糊范围(准确的范围在网上都没有给出)。
此处把部分红色归为紫色范围:
下面演示视频demo,我们提取视频中的绿色部分:
import cv2 as cv
import numpy as np
def extrace_object():
capture = cv.VideoCapture('./image/text.mp4')
while(True):
res, frame = capture.read()
hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)
lower_hsv = np.array([35, 43, 46])
upper_hsv = np.array([77, 255, 255])
mask = cv.inRange(hsv, lowerb=lower_hsv, upperb=upper_hsv)
if res == False:
break
# cv.imshow('Video', frame)
cv.imshow('Mask', mask)
c = cv.waitKey(40)
if c == 27:
break
extrace_object()
两个一维数组参考上面的表格,因为我们提取绿色,所以选绿色的哪一组数值.
图像的分离和合并
cv.split( )函数实现图像的分离
import cv2 as cv
image = cv.imread("./image/CR.jpg", 1)
b, g, r = cv.split(image)
cv.imshow('blue', b)
cv.imshow('green', g)
cv.imshow('red', r)
#image1 = cv.merge([b, g, r])
#image1[:, :, 2] = 122
cv.imshow('change image', image)
cv.waitKey(0)
cv.destroyAllWindows()
cv.merge( )函数用于合并图像的通道
import cv2 as cv
image = cv.imread("./image/CR.jpg", 1)
b, g, r = cv.split(image)
image1 = cv.merge([b, g, r])
image1[:, :, 2] = 122
cv.imshow('merge image', image1)
cv.waitKey(0)
cv.destroyAllWindows()
完~~~