Возвращаемся к началу, если cv2.inrange () не может найти подходящий цвет - PullRequest
0 голосов
/ 05 февраля 2019

Я использую слегка модифицированную версию этого кода (https://www.pyimagesearch.com/2014/08/04/opencv-python-color-detection/) вместе с OCR тессеракта, чтобы идентифицировать символ на наземном маркере с камеры на дроне. Этот маркер будет отличаться красным цветом, и яищу способ проверить, присутствует ли красный цвет на изображении, и если нет, проверить еще раз на следующем изображении (кадре видео).

Пока я просто ищу способиспользовать ошибку, которая появляется в cv2.inrange (), если красный отсутствует, чтобы отправить его обратно в начало кода, чтобы вручную можно было выбрать новое изображение для проверки. Я понимаю, что это может быть довольно просто, но я новичокна питона!

import numpy as np
import argparse
import cv2
from PIL import Image

#       <<DETECT RED AREA OF IMAGE AND MASK OTHER COLOURS>>

# construct the argument parse and parse the arguments
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", help = "path to the image")
args = vars(ap.parse_args())

# load the image
image = cv2.imread(args["image"])

# define the list of boundaries
boundaries = [([0, 0, 100], [0, 0, 255]),
]

# loop over the boundaries
for (lower, upper) in boundaries:
    # create NumPy arrays from the boundaries
    lower = np.array(lower, dtype = "uint8")
    upper = np.array(upper, dtype = "uint8")
    print(upper)
    # find the colors within the specified boundaries and apply
    # the mask
    mask = cv2.inRange(image, lower, upper)
    output = cv2.bitwise_and(image, image, mask = mask)
...