Сценарий Python для проверки наличия красного цвета в изображении и вызова другой функции - PullRequest
2 голосов
/ 11 октября 2019

Сейчас учусь на Python и открываю CV. Моя проблема в том, что мне нужно найти, если мое изображение имеет красный цвет, если оно имеет красный цвет, вызовите одну функцию, если оно не имеет красного цвета, вызовите другую функцию. У меня есть код, чтобы найти КРАСНЫЙ цвет в моем изображении, проблема не в том, что я могу написать Если условие, как если изображение в КРАСНОМ цвете делает это, сделайте это.

Может кто-нибудь помочь мне с этим? Ниже приведен код, который я пытаюсь с этим, я могу обнаружить красный цвет и распечатать изображение, но не могу добавить условие в моем сценарии. Пожалуйста, помогите мне решить эту проблему.

import cv2
import numpy as np
img = cv2.imread("Myimage.png")
img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
mask1 = cv2.inRange(img_hsv, (0,50,20), (5,255,255))
mask2 = cv2.inRange(img_hsv, (175,50,20), (180,255,255))
mask = cv2.bitwise_or(mask1, mask2 )
croped = cv2.bitwise_and(img, img, mask=mask)
cv2.imshow("mask", mask)
cv2.imshow("croped", croped)
cv2.waitKey()

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

Идея состоит в том, чтобы проверить изображение маски для белых пикселей с помощью cv2.countNonZero(). После установки порога цвета с помощью cv2.inRange() вы получите двоичную маску, в которой все пиксели в пределах нижнего и верхнего порогов HSV выделены белым цветом. Таким образом, вы можете просто проверить, существуют ли белые пиксели на маске, чтобы определить, присутствует ли красный цвет на изображении

# Binary mask with pixels matching the color threshold in white
mask = cv2.bitwise_or(mask1, mask2)

# Determine if the color exists on the image
if cv2.countNonZero(mask) > 0:
    print('Red is present!')
else:
    print('Red is not present!')
0 голосов
/ 11 октября 2019

Предполагая, что переменная mask содержит области, которые являются КРАСНЫМИ и являются двоичным массивом, тогда вы можете просто суммировать элементы, которые равны 1, и сравнить сумму с нулем. Если нет элементов 1, значит ваше изображение не содержит КРАСНЫЙ

if (mask == 1).sum() > 1:
    # do your stuff
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...