int createTrackbar( const String &trackbarname, 轨迹条的名字 const String &winname, 窗口名字。窗口得存在才能创建滑动条 int* value, 滑块的初始值 int count, 滑块的最大值(最小位置的值始终为0) TrackbarCallback onChange=0, 回调函数 void* userdata=0 用户传给回调函数的数据 );2:setTrackbarPos
setTrackbarPos (const String &trackbarname,需要设置trackbar的名称,与创建的名称相对应 const String &winname, trackbar所在窗体的名称 int pos 该trackbar的值 );二:代码演示 1:BGR调色盘
import cv2
import numpy as np
#鼠标回调函数
def mcallback(event,x,y,flags,userdata):
pass
cv2.namedWindow('trackbar', cv2.WINDOW_AUTOSIZE)
cv2.resizeWindow('trackbar', 640, 480)
#设置鼠标回调
cv2.createTrackbar('R',"trackbar",0,255,mcallback)
cv2.createTrackbar('G',"trackbar",0,255,mcallback)
cv2.createTrackbar('B',"trackbar",0,255,mcallback)
img=np.zeros((480,640,3),np.uint8)#全黑图片
while True:
r=cv2.getTrackbarPos('R','trackbar')
b=cv2.getTrackbarPos('B','trackbar')
g=cv2.getTrackbarPos('G','trackbar')
#改变颜色
img[:]=[b,g,r]
cv2.imshow('trackbar',img)
key=cv2.waitKey(10)#为0则只显示一帧
if(key&0xff==ord('q')):
break
cv2.destroyAllWindows()
如果觉得有标红不好看回调函数改成: def mcallback(event):
import cv2
import numpy as np
def mcallback(x):
pass
cv2.namedWindow("Tracking")
#绿色的HSV:可能不是很准
#l_g = np.array([35, 43, 46]) # 下限
#u_g = np.array([77,255,255]) # 上限
cv2.createTrackbar("LH", "Tracking", 35, 255, mcallback)
cv2.createTrackbar("LS", "Tracking", 43, 255, mcallback)
cv2.createTrackbar("LV", "Tracking", 46, 255, mcallback)
cv2.createTrackbar("UH", "Tracking", 77, 255, mcallback)
cv2.createTrackbar("US", "Tracking", 255, 255, mcallback)
cv2.createTrackbar("UV", "Tracking", 255, 255, mcallback)
while True:
img = cv2.imread(r"C:UsersDMrPicturestextbook.jpg")
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
l_h = cv2.getTrackbarPos("LH", "Tracking")
l_s = cv2.getTrackbarPos("LS", "Tracking")
l_v = cv2.getTrackbarPos("LV", "Tracking")
u_h = cv2.getTrackbarPos("UH", "Tracking")
u_s = cv2.getTrackbarPos("US", "Tracking")
u_v = cv2.getTrackbarPos("UV", "Tracking")
l_g = np.array([l_h, l_s, l_v]) # lower green value
u_g = np.array([u_h, u_s, u_v])
mask = cv2.inRange(hsv, l_g, u_g)
res = cv2.bitwise_and(img, img, mask=mask) # src1,src2
cv2.imshow("img", img)
cv2.imshow("mask", mask)
cv2.imshow("res", res)
key = cv2.waitKey(10)
if(key & 0xff == ord('q')):
break
cv2.destroyAllWindows()
抽空会把hsv的学习笔记会给大家补上,
最近在实习



