Обнаружение цвета OpenCV Python с логическим выводом
Я использую этот скрипт для определения цвета:
# импортировать необходимые пакеты
import numpy as np
import argparse
import cv2
# построить аргумент parse и разобрать аргументы
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", help = "path to the image")
args = vars(ap.parse_args())
# загрузить изображение
image = cv2.imread(args["image"])
# определить список границ
boundaries = [
([100,50,220],[135,80,245]),
]
# цикл за границами
for (lower, upper) in boundaries:
# create NumPy arrays from the boundaries
lower = np.array(lower, dtype = "uint8")
upper = np.array(upper, dtype = "uint8")
# 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)
print (output)
# show the images
cv2.imshow("images", np.hstack([image, output]))
cv2.waitKey(0)
Мне нужна логическая переменная для определения цвета или нет. Как я могу это сделать?
С уважением Томас
1 ответ
Вот мое собственное решение:
# импортировать необходимые пакеты
import shutil
import numpy as np
import argparse
import cv2
# построить аргумент parse и разобрать аргументы
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", help = "path to the image")
args = vars(ap.parse_args())
# загрузить изображение
image = cv2.imread(args["image"])
# определить список границ
boundaries = [
([100,50,220],[135,80,245]),
]
# цикл за границами
for (lower, upper) in boundaries:
# создавать массивы NumPy из границ
lower = np.array(lower, dtype = "uint8")
upper = np.array(upper, dtype = "uint8")
# найти цвета в указанных границах и применить маску
mask = cv2.inRange(image, lower, upper)
if np.sum(mask) < 100:
shutil.move(args["image"], "/temp/")
С уважением Томас