Использование NSUserDefaults с Xcode 8 и iOS 10

Ну, во-первых, вы должны знать, какое цветовое пространство вы используете. Просто небольшой учебник цветовых пространств в OpenCV для Mat типа CV_8UC3. (Изображения из Википедии)

HSV

enter image description here [/g2]

В цветовом пространстве HSV (оттенок, насыщенность, значение) H дает цветной доминантный цвет, S - насыщенность цвета, V - легкость. В OpenCV диапазоны разные. S, V находятся в [0,255], а H - в [0, 180]. Обычно H находится в диапазоне [0,360] (полный круг), но для того, чтобы поместиться в байте (256 различных значений), его значение уменьшается вдвое.

В пространстве HSV проще отделить один цвет, так как вы можете просто установить правильный диапазон для H и просто позаботиться о том, чтобы S не был слишком маленьким (он будет почти белым), а V не слишком маленький (будет темно).

Так, например, если вам нужны цвета blue , вам нужно, чтобы значение H находилось вокруг значения 120 (например, в [110,130] ), а S, V не слишком мала (например, в [100, 255]).

Белый не является оттенком (радуга не имеет белого цвета в нем), но представляет собой комбинацию цвета.

В HSV вам нужно взять весь диапазон H (H в [0, 180]), очень маленькие значения S (скажем, S в [0, 25]) и очень высокие значения V (скажем, V в [230, 255]). Это в основном соответствует верхней части центральной оси конуса.


Чтобы заставить отслеживать белые объекты в пространстве HSV, вам нужно:

lower_white = np.array([0, 0, 230])
upper_white = np.array([180, 25, 255])

Или , так как вы определили значение чувствительности, например:

sensitivity = 15
lower_white = np.array([0, 0, 255-sensitivity])
upper_white = np.array([180, sensitivity, 255])

Для других цветов:

green = 60;
blue = 120;
yellow = 30;
...
sensitivity = 15

// Change color with your actual color
lower_color = np.array([color - sensitivity, 100, 100]) 
upper_color = np.array([color + sensitivity, 255, 255])

Значение красного H равно 0, поэтому вам нужно взять два диапазона и «OR "их вместе:

sensitivity = 15
lower_red_0 = np.array([0, 100, 100]) 
upper_red_0 = np.array([sensitivity, 255, 255])
lower_red_1 = np.array([180 - sensitivity, 100, 100]) 
upper_red_1 = np.array([180, 255, 255])

mask_0 = cv2.inRange(hsv, lower_red_0 , upper_red_0);
mask_1 = cv2.inRange(hsv, lower_red_1 , upper_red_1 );

mask = cv2.bitwise_or(mask1, mask2)

Теперь вы можете отслеживать любой цвет!

29
задан JAL 14 June 2016 в 16:03
поделиться