import cv2
import numpy as np
if __name__ == '__main__':
def nothing(*arg):
pass
cv2.namedWindow("result") # создаем главное окно
cv2.namedWindow("settings") # создаем окно настроек
# создаем 6 бегунков для настройки начального и конечного цвета фильтра
cv2.createTrackbar('h1', 'settings', 0, 255, nothing)
cv2.createTrackbar('s1', 'settings', 0, 255, nothing)
cv2.createTrackbar('v1', 'settings', 0, 255, nothing)
cv2.createTrackbar('h2', 'settings', 255, 255, nothing)
cv2.createTrackbar('s2', 'settings', 255, 255, nothing)
cv2.createTrackbar('v2', 'settings', 255, 255, nothing)
cv2.createTrackbar('GaussianBlur', 'settings', 0, 20, nothing)
cv2.createTrackbar('medianBlur', 'settings', 0, 20, nothing)
crange = [0, 0, 0, 0, 0, 0]
while True:
fn = '1.jpg'
img = cv2.imread(fn)
cv2.imshow('original', img)
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# считываем значения бегунков
h1 = cv2.getTrackbarPos('h1', 'settings')
s1 = cv2.getTrackbarPos('s1', 'settings')
v1 = cv2.getTrackbarPos('v1', 'settings')
h2 = cv2.getTrackbarPos('h2', 'settings')
s2 = cv2.getTrackbarPos('s2', 'settings')
v2 = cv2.getTrackbarPos('v2', 'settings')
# формируем начальный и конечный цвет фильтра
h_min = np.array((h1, s1, v1), np.uint8)
h_max = np.array((h2, s2, v2), np.uint8)
# накладываем фильтр на кадр в модели HSV
thresh = cv2.inRange(hsv, h_min, h_max)
cv2.imshow('result', thresh)
lower_orange = np.array([h1, s1, v1])
upper_orange = np.array([h2,s2,v2])
#обычная маска
mask = cv2.inRange(img, lower_orange, upper_orange)
cv2.imshow('mask', mask)
#маска с фильтром GaussianBlur
gb = cv2.getTrackbarPos('GaussianBlur', 'settings')
imgblur = cv2.GaussianBlur(hsv, (5, 5), gb, hsv)
mask2 = cv2.inRange(imgblur, lower_orange, upper_orange)
res2 = cv2.bitwise_and(img, img, mask=mask2)
cv2.imshow('GaussianBlur', res2)
# маска с фильтром medianBlur
mbf = cv2.getTrackbarPos('medianBlur', 'settings')
median = cv2.medianBlur(hsv, 5)
mask3 = cv2.inRange(median, lower_orange, upper_orange)
res3 = cv2.bitwise_and(img, img, mask=mask3)
cv2.imshow('medianmask', res3)
# маска с фильтром bilateralFilter
blur = cv2.bilateralFilter(hsv, 9, 75, 75)
mask4 = cv2.inRange(blur, lower_orange, upper_orange)
res4 = cv2.bitwise_and(img, img, mask=mask4)
cv2.imshow('blur', res4)
res = cv2.bitwise_and(hsv, img, mask= mask)
cv2.imshow('maskrez', res)
ch = cv2.waitKey(5)
if ch == 27:
break
cv2.destroyAllWindows()
и
не работают