色彩空间转换API
cv.COLOR_本身的api 2 想转换的api
通过以上实现之间的API之间的相互转换
import cv2 as cv
# 色彩空间之间的相互转换
def color_space_demo(img):
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
cv.imshow("gray", gray)
hsv = cv.cvtColor(img,cv.COLOR_BGR2HSV)
cv.imshow("hsv", hsv)
yuv = cv.cvtColor(img, cv.COLOR_BGR2YUV)
cv.imshow("yuv", yuv)
ycr = cv.cvtColor(img, cv.COLOR_BGR2YCrCb)
cv.imshow("yrc", ycr)
src = cv.imread("D:/JetBrains/PyCharm 2019.1.3/PycharmProjects/Study/opencv_study/Penguins.jpg")
cv.namedWindow("input img", cv.WINDOW_AUTOSIZE)
cv.imshow("input img", src)
color_space_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()
inRange
cv.inRange(src, lowerb, upperb, dst=None)
inRange提取视屏中想要的颜色
import cv2 as cv
import numpy as np
# inRange提取视屏中想要的颜色
def extract_object_demo():
captual = cv.VideoCapture("D:/JetBrains/PyCharm 2019.1.3/PycharmProjects/Study/opencv_study/1.wmv")
while True:
ret, frame = captual.read() # 读取视频
if ret == False:
break
hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)
lower_hsv = np.array([0, 0, 46]) # 想提取颜色最低值
upper_hsv = np.array([180, 43, 220]) # 想提取颜色最高值
mask = cv.inRange(hsv, lowerb=lower_hsv, upperb=upper_hsv)
cv.imshow("video", frame)
cv.imshow("mask", mask)
c = cv.waitKey(40)
if c == 27: # 27 的时候 是退出
break
src = cv.imread("D:/JetBrains/PyCharm 2019.1.3/PycharmProjects/Study/opencv_study/Penguins.jpg")
cv.namedWindow("input img", cv.WINDOW_AUTOSIZE)
cv.imshow("input img", src)
extract_object_demo()
cv.waitKey(0)
cv.destroyAllWindows()
效果图:
通道的分离与合并
cv.split(m, mv=None) 对通道进行分离操作
cv.merge(mv, dst=None) 合并
import cv2 as cv
src = cv.imread("D:/JetBrains/PyCharm 2019.1.3/PycharmProjects/Study/opencv_study/Penguins.jpg")
cv.namedWindow("input img", cv.WINDOW_AUTOSIZE)
cv.imshow("input img", src)
# 通道分离
b, g, r = cv.split(src) # 分离通道
cv.imshow("blue", b)
cv.imshow("green", g)
cv.imshow("red", r)
# 分离之后给某一通道赋值
src[:, :, 2] = 0
cv.imshow("changed_img", src)
# 通道合并
src = cv.merge([b, g, r])
src[:, :, 1] = 0 # 自定义的选择颜色
cv.imshow("merge_img", src)
cv.waitKey(0)
cv.destroyAllWindows()
效果图: