Post

Colour Detection And Trackbars - opencv cv2 tutorial chapter7

chapter7

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import cv2
import numpy as np
from cv2tools import stackImages


def fun(x):
    pass


cv2.namedWindow("bars")
cv2.resizeWindow("bars", 500, 300)

cv2.createTrackbar("hue min", "bars", 0, 179, fun)
cv2.createTrackbar("hue max", "bars", 179, 179, fun)
cv2.createTrackbar("sat min", "bars", 125, 255, fun)
cv2.createTrackbar("sat max", "bars", 255, 255, fun)
cv2.createTrackbar("val min", "bars", 76, 255, fun)
cv2.createTrackbar("val max", "bars", 255, 255, fun)

while True:
    img = cv2.imread('Resources/lambo.PNG')
    img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    h_min = cv2.getTrackbarPos("hue min", "bars")
    h_max = cv2.getTrackbarPos("hue max", "bars")
    s_min = cv2.getTrackbarPos("sat min", "bars")
    s_max = cv2.getTrackbarPos("sat max", "bars")
    v_min = cv2.getTrackbarPos("val min", "bars")
    v_max = cv2.getTrackbarPos("val max", "bars")
    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])

    # cv2.inRange创建只包含lowerb到upperb的二值图像
    mask = cv2.inRange(img_hsv, lower, upper)
    img_result = cv2.bitwise_and(img, img, mask=mask)

    img_stack = stackImages(0.6, ([img, img_hsv], [mask, img_result]))
    cv2.imshow('stack', img_stack)
    cv2.waitKey(1)

This post is licensed under CC BY 4.0 by the author.