Я использую python, PIL, opencv и numpy для обнаружения одноцветных текстов (т.е. один красный, один зеленый). Я хочу обнаружить этот красочный текст на расстоянии до 6 метров во время прямой трансляции. Я использовал методы определения цвета, но они не работали после 30-50 см. Камера должна быть близка к цветам. В качестве второго метода обнаружения этих текстов я использовал метод ctpn. Хотя он обнаруживает тексты, он не предоставляет координаты этих текстов, так как мне также нужны координатные точки текстов. Я также попробовал метод OCR в Matlab для автоматического обнаружения текста в естественном изображении, но это не удалось, поскольку он находит другие небольшие объекты как текст. Я так застрял в том, что делать.
Скажем, например, на изображении, снятом с расстояния 6 метров, есть два разных текста. Один текст зеленый, другой красный. Ширина этих текстов примерно 40-50 см. Кроме того, это всего лишь два разных слова, а не длинные тексты. Как я могу обнаружить их и указать их местоположение как (x1, y1) и (x2, y2)? Это возможно ? Нужен любой успешный намек?
import numpy as np
from PIL import Image
# Open image and make RGB and HSV versions
RGBim = Image.open("AdjustedNewMaze3.jpg").convert('RGB')
HSVim = RGBim.convert('HSV')
# Make numpy versions
RGBna = np.array(RGBim)
HSVna = np.array(HSVim)
# Extract Hue
H = HSVna[:,:,0]
# Find all green pixels, i.e. where 100 < Hue < 140
lo,hi = 100,140
# Rescale to 0-255, rather than 0-360 because we are using uint8
lo = int((lo * 255) / 360)
hi = int((hi * 255) / 360)
green = np.where((H>lo) & (H<hi))
# Make all green pixels black in original image
RGBna[green] = [0,0,0]
def find_nearest(array, value):
array = np.asarray(array)
idx = (np.abs(array - value)).argmin()
return array[idx]
value = 120 & 125
green = find_nearest(RGBna, value)
print(green)
count = green[0].size
print("Pixels matched: {}".format(count))
Image.fromarray(green).save('resultgreen.png')
savedAlpha = im.getchannel('A')
и восстановил его в конце сresult.putalpha(savedAlpha)
. Настоящие камеры обычно не создают альфа-каналы — это делают только специалисты по графике :-) - person Mark Setchell   schedule 08.09.2018unique()
поможет вам лучше найти ваши значения. - person devdob   schedule 08.09.2018Image.open()
иImageDraw.Draw
для управления изображением по своему усмотрению. Проверьте этот небольшой пример здесь effbot.org/imagingbook/imagedraw.htm - person devdob   schedule 08.09.2018