cv.split(src, mvbegin)
参数 | 说明 |
---|---|
src | 表示需要进行分离的多通道数组。 |
lut | 表示输出数组或者输出的vector容器。 |
OpenCV的BGR色彩空间(Blue、Green、Red,蓝、绿、红),其中0表示引用取出的是蓝色分量,1表示引用取出的是绿色分量,2表示引用取出的是红色分量。
cv.merge(mv [, dst])
参数 | 说明 |
---|---|
mv | 表示需要 被合并的输入矩阵或vector容器的阵列, 这个mv参数中所有的矩阵必须有着一样的尺寸和深度。 |
dst | 表示输出矩阵,和mv[0]拥有一样的尺寸和深度,并且通道的数量是矩阵阵列中的通道的总数。 |
cv.mixChannels(src, dst, fromTo)
参数 | 说明 |
---|---|
src | 表示输入数组或向量矩阵,所有矩阵的大小和深度必须相同。 |
dst | 表示输出数组或矩阵向量,大小和深度必须与src[0]相同。 |
fromTo | 表示指定被复制通道与要复制到的位置组成的索引对。 |
cv.inRange(src, lowerb, upperb [, dst])
参数 | 说明 |
---|---|
src | 表示输入图像。 |
lowerb | 表示最低值。 |
upperb | 表示最高值。 |
dst | 表示输出图像。 |
cv.inRange()函数的作用是可以提取你想要的颜色,并把该颜色的区域设置为白色,其余的设置为黑色。
import cv2 as cv
def split_demo():
img = cv.imread('./images/butterfly.jpg')
cv.imshow('butterfly', img)
b,g,r = cv.split(img)
cv.imshow('butterfly_b', b)
cv.imshow('butterfly_g', g)
cv.imshow('butterfly_r', r)
cv.waitKey(0)
cv.destroyAllWindows()
if __name__ == "__main__":
split_demo()
import cv2 as cv
import numpy as np
def split_demo():
img = cv.imread('./images/butterfly.jpg')
cv.imshow('butterfly', img)
b,g,r = cv.split(img)
like_img_b = np.zeros_like(img)
like_img_b[:,:,0] = b
like_img_g = np.zeros_like(img)
like_img_g[:,:,1] = g
like_img_r = np.zeros_like(img)
like_img_r[:,:,2] = r
cv.imshow('butterfly_b', like_img_b)
cv.imshow('butterfly_g', like_img_g)
cv.imshow('butterfly_r', like_img_r)
cv.waitKey(0)
cv.destroyAllWindows()
if __name__ == "__main__":
split_demo()
import cv2 as cv
def split_demo():
img = cv.imread('./images/butterfly.jpg')
cv.imshow('butterfly', img)
dst = cv.cvtColor(img, cv.COLOR_BGR2HSV)
cv.imshow('butterfly_hsv', dst)
b,g,r = cv.split(dst)
cv.imshow('butterfly_b', b)
cv.imshow('butterfly_g', g)
cv.imshow('butterfly_r', r)
cv.waitKey(0)
cv.destroyAllWindows()
if __name__ == "__main__":
split_demo()
import cv2 as cv
def merge_demo():
img = cv.imread('./images/butterfly.jpg')
# cv.imshow('butterfly', img)
b,g,r = cv.split(img)
# cv.imshow('butterfly_b', b)
# cv.imshow('butterfly_g', g)
# cv.imshow('butterfly_r', r)
dst = cv.merge([b,g,r])
cv.imshow('butterfly_merge_bgr', dst)
rgb = cv.merge([r,g,b])
cv.imshow('butterfly_merge_rgb', rgb)
cv.waitKey(0)
cv.destroyAllWindows()
if __name__ == "__main__":
merge_demo()
import cv2 as cv
import numpy as np
def mixchannels_demo():
img = cv.imread('./images/butterfly.jpg')
cv.imshow('butterfly', img)
# 复制一个图像矩阵
dst = np.zeros_like(img)
# 复制图像通道
cv.mixChannels([img], [dst], fromTo=[0,1,2,2,1,0])
cv.imshow('butterfly_mixChannels', dst)
cv.waitKey(0)
cv.destroyAllWindows()
if __name__ == "__main__":
mixchannels_demo()
import cv2 as cv
import numpy as np
def inrange_demo():
img = cv.imread('./images/butterfly.jpg')
cv.imshow('butterfly', img)
# 转换为hsv图片
hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV)
# 设置最大值和最小值
lower = np.array((0.,0.,0.))
upper = np.array((180.,255.,46.))
mask = cv.inRange(hsv, lower, upper)
cv.imshow('butterfly_mask', mask)
cv.waitKey(0)
cv.destroyAllWindows()
if __name__ == "__main__":
inrange_demo()
使用OPENCV中 cv.cvtColor 函数,并设置参数为 cv.COLOR_BGR2HSV ,那么所得的H、S、V值范围分别是[0,180),[0,255),[0,255),因此可以查下面的表格来确定颜色的大致区间。