фонпитон обнаружить цвета вне диапазона
Я строю программу, которая преобразует скриншот приложения для обмена сообщениями в текст. Один шаг - использовать открытую функцию CV matchTemplate
, чтобы найти, существует ли какая-либо эмуляция на скриншоте. Поскольку я должен повторять более 1600 символов emoji, я хотел бы сначала проверить скриншот, чтобы увидеть, есть ли у него цвета вне диапазона (синий и белый). Если эта проверка верна, я запустил многопользовательский метод сопоставления шаблонов.
Вопрос
Учитывая скриншот ниже, как я могу найти цвета снаружи синий и белый (фон и цвет текста? Я рассматривал, используя OpenCV inRange
найти цвета, которые соответствуют синий и белый, сосчитать число пиксели, DonT матча, и посмотреть, если это число меньше, чем общее количество пикселей изображения.
Проблема
цветовых диапазонов I определяют слишком широк, чтобы га ndle все псевдонимы вокруг шрифтов. Края шрифтов - всевозможные синие цвета. Если я определяю большой диапазон, я, возможно, не нахожу emojis.
код до сих пор
# load the image and set up variables
image = cv2.imread(args["image"])
iW, iH = image.shape[:2]
pixels = iW * iH
masked = 0
# define the list of color boundaries
boundaries = [
([240, 130, 30], [255, 150, 80]), # blue
([250, 250, 250], [255, 255, 255]) # white
]
# 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")
# find the colors within the specified boundaries
mask = cv2.inRange(image, lower, upper)
for row in mask:
for px in row:
if px == 255:
masked += 1
if masked < pixels:
# probably has emojis!!!
ИЛИ вместе синие и белые маски. Тогда отрицаем. Используйте «any» или «countNonZero», чтобы найти, имеет ли результат белые пиксели – Miki
@Miki, если вы можете выразить OR и часть отрицания в коде? Это мой первый раз пишущий Python – jaredrada
OpenCV имеет «bitwise_or» и «bitwise_not». Вероятно, numpy имеет также определенные функции – Miki