Рубрики
Без рубрики

Создайте простую поисковую систему изображения в OpenCV и колбе

Узнайте, как использовать OpenCV, чтобы извлечь цвета изображения, а затем использовать веб-приложения на основе колба для поиска их.

Автор оригинала: Adnan Siddiqi.

Недавно я начал играть с OpenCV, библиотекой компьютерного зрения с открытым исходным кодом для обработки изображений. К счастью, есть привязки Python. Больше удачи, что парни, как Адриан, проделали отличный сервис, выпустив обе книги, так и блог на аналогичной теме.

Так о чем все о? Ну, это просто, или я говорю, самая простая демонстрация использования OpenCV для загрузки изображения и нахождение цвета, связанного с этим изображением и показывала представление в веб-приложении на основе колбы. Это не состояние арт-приложения, ни в настоящее время не служат так, как я собираюсь делать, но эй, это всего лишь начало, а не конец. Я не мог найти лучшее оправдание, кроме преобразования моего основного изучения пикселей в продукт (Google! Осторожно !!)

Я не собираюсь int Nitty-Gritty детали как OpenCV, так и колба, и я буду охватывать то, что на самом деле делает приложение.

Приложение состоит из двух частей: веб-приложение, которое используется для хранения изображений из веб и отображения обрабатываемых изображений и их доминирующих цветов, и сценарий командной строки, который запускается на загруженном изображении и извлечении цветовых кодов. Веб-изображение выглядит ниже:

Screen-Shot-2019-09-08-AT-2,01,41 - PM.PNG

Вы ищите изображения по цветовому коду, и он возвращает результат, что-то вроде ниже:

Screen-Shot-2019-09-08-AT-2.06.04-PM.PNG

И вид одного изображения выглядит как:

Screen-Shot-2019-09-08-AT-2,44.46-PM.PNG

Давайте обсудим основную часть системы, которая есть, сценарий командной строки, который выполняет основную работу.

def process_image(image_name):
    color_count = {}
    print('Processing the image {}'.format(image_name))
    path = 'website/static/uploaded_images/' + image_name

    image = cv2.imread(path)

    for i in range(image.shape[0]):
        for j in range(image.shape[1]):
            (b, g, r) = image[i, j]
            h_value = rgb2hex(r, g, b)

            if h_value in color_count:
                color_count[h_value] += 1
            else:
                color_count[h_value] = 1
    return color_count

После импорта компьютерного видения мы читаем изображение с диска, вызывая CV2.imread (). Данные доступны в виде Numpy Array, следовательно, используя его метод формы для поиска деталей, таких как ширина, высота и канал. Кстати, OpenCV хранит данные изображения в формате BGR вместо цветового пространства RGB. Как только данные извлекаются в формате BGR, мы используем пользовательский метод RGB2HEX для преобразования RGB в цвет шестигранства. Затем функция возвращает список словарей состоит из цветового кода в Hex, а его частота, которую мы будем использовать, чтобы найти проценты цвета в изображении. Я также сделал Демо который может видеть ниже.

Заключение

Так что это был основной учебник по обработке изображений в OpenCV. Это не зрелый продукт, поскольку он не может рассказать вам о уникальных цветах на картинке. Это просто говорит вам, что INFORMATIATON на основе цветов пикселей, а не создавая цветовую сегментацию и кластеризацию на основе алгоритма ML.

Надеюсь, я буду обсуждать opencv дальше в ближайшие недели на дальнейших продвинутых тем. Как всегда, код доступен на Github Отказ

Эта статья была первоначально опубликована здесь Отказ