Python Opencv轨迹栏作为调色板对摄像头进行BGR取色(RGB)
代码如下:
#BGR调试
import cv2 as cv
import numpy as np
def nothing(x):
pass
cap = cv.VideoCapture(0)
img = np.zeros((300,512,3), np.uint8)
cv.namedWindow('image')
cv.createTrackbar('B_L','image',0,255,nothing)
cv.createTrackbar('B_H','image',0,255,nothing)
cv.createTrackbar('G_L','image',0,255,nothing)
cv.createTrackbar('G_H','image',0,255,nothing)
cv.createTrackbar('R_L','image',0,255,nothing)
cv.createTrackbar('R_H','image',0,255,nothing)
while(1):
# 读取帧
_, frame = cap.read()
B_L = cv.getTrackbarPos('B_L','image')
B_H = cv.getTrackbarPos('B_H','image')
G_L = cv.getTrackbarPos('G_L','image')
G_H = cv.getTrackbarPos('G_H','image')
R_L = cv.getTrackbarPos('R_L','image')
R_H = cv.getTrackbarPos('R_H','image')
lower_ = np.array([B_L,G_L,R_L])
upper_ = np.array([B_H,G_H,R_H])
# 设置BGR的阈值使得只取该范围内颜色
mask = cv.inRange(frame, lower_, upper_)
# 将掩膜和图像逐像素相加
res = cv.bitwise_and(frame,frame, mask= mask)
cv.imshow('frame',frame)
cv.imshow('mask',mask)
cv.imshow('image',res)
k = cv.waitKey(5) & 0xFF
if k == 27:
break
cv.destroyAllWindows()
注意:opencv捕获图像为BGR,与原始RGB有不同,注意甄别
内容来自山东科技大学2019级物联网机器视觉1组