该案例是一个基础的opencv交互案例,主要过程是使用TrackBar()功能实现。具体而言就是将RGB图片转为HSV格式。然后使用进度条调整数值。来取出想要的颜色区域。可以为后期颜色屏幕笔案例做基础。具体代码如下:
import cv2 import numpy as np def empty(v): pass img = cv2.imread("pyopencv_again/XiWinnie.jpg") img = cv2.resize(img,(0,0),fx=0.5,fy=0.5) cv2.namedWindow('TrackBar') cv2.resizeWindow('TrackBar',640,320) cv2.createTrackbar('Hue Min','TrackBar',0,179,empty) cv2.createTrackbar('Hue Max','TrackBar',179,179,empty) cv2.createTrackbar('Sat Min','TrackBar',0,255,empty) cv2.createTrackbar('Sat Max','TrackBar',255,255,empty) cv2.createTrackbar('Val Min','TrackBar',0,255,empty) cv2.createTrackbar('Val Max','TrackBar',255,255,empty) hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV) while True: #获取进度条上设置的值 h_min = cv2.getTrackbarPos('Hue Min','TrackBar') h_max = cv2.getTrackbarPos('Hue Max','TrackBar') s_min = cv2.getTrackbarPos('Sat Min','TrackBar') s_max = cv2.getTrackbarPos('Sat Max','TrackBar') v_min = cv2.getTrackbarPos('Val Min','TrackBar') v_max = cv2.getTrackbarPos('Val Max','TrackBar') #print(h_min,h_max,s_min,s_max,v_min,v_max) #将数值存为数组 lower = np.array([h_min,s_min,v_min]) upper = np.array([h_max,s_max,v_max]) #print(lower) #[0,0,0] #inRange()函数可实现二值化功能(这点类似threshold()函数),更关键的是可以同时针对多通道进行操作,使用起来非常方便! mask = cv2.inRange(hsv,lower,upper) result = cv2.bitwise_and(img,img,mask=mask) cv2.imshow('img',img) cv2.imshow('hsv',hsv) cv2.imshow('mask',mask) cv2.imshow('result',result) cv2.waitKey(10)