10 лучших захватывающих идей и тем проекта OpenCV для новичков и опытных [2022]

Опубликовано: 2021-05-27

OpenCV или библиотека компьютерного зрения с открытым исходным кодом — это мощная библиотека машинного обучения и искусственного интеллекта, используемая для разработки и решения проблем компьютерного зрения. Компьютерное зрение включает в себя обучение компьютера понимать и понимать визуальный мир, идентифицировать элементы и реагировать на них с помощью моделей глубокого обучения. Сегодня предприятия по всему миру используют его для обработки изображений, распознавания лиц, распознавания голоса, отслеживания движения и обнаружения объектов.

Такие компании, как Google, Facebook, Microsoft и Intel, уже используют OpenCV для разработки приложений компьютерного зрения. Марк Цукерберг в интервью 2015 года заметил: «Если мы сможем создать компьютеры, которые смогут понять, что находится на изображении, и рассказать об этом слепому человеку, который в противном случае не мог бы увидеть это изображение, это тоже было бы потрясающе».

Сегодня технология OpenCV стала прорывом для слепых и слабовидящих людей. Это позволяет им знакомиться с незнакомой средой и распознавать предметы и людей поблизости, чтобы преодолеть это нарушение зрения. Компьютерное зрение также является технологией, стоящей за беспилотными автомобилями и интеллектуальными датчиками движения.

Если вы присматриваетесь к карьере в области компьютерного зрения, вот десять интересных проектов с открытым резюме, которые помогут вам получить реальный опыт. Итак, приступим!

Оглавление

10 лучших проектов Open CV, которые стоит проверить в 2022 году

Проект 1: Обнаружение пневмонии с помощью EdgeML

Этот проект OpenCV направлен на развертывание программного обеспечения для обнаружения пневмонии на основе ИИ на вашем Raspberry Pi. Он использует систему машинного обучения Edge для преобразования Raspberry Pi с камерой в классификатор пневмонии с использованием мультиконтейнеров Balena.

В Balena добавляется второй контейнер, который запускает механизм вывода Edge Impulse WebAssembly на сервере Node.js. Оба контейнера обмениваются данными через веб-сокеты, чтобы BalenaCam каждую секунду транслировал видео с вашей камеры на веб-страницу.

Программное обеспечение и инструменты, используемые в проекте, включают OpenCV, Edge Impulse Studio, TensorFlow Lite, GitHub Desktop, balenaCloud, Microsoft VS Code и Docker. Веб-браузеры, поддерживающие Balena Cam, — это Chrome, Safari, Firefox и Edge.

Вы можете ознакомиться с проектом здесь .

Проект 2: Датчик движения на основе OpenCV для Samsung SmartThings

Во-первых, вам нужен Raspberry Pi 3 с работающей PiCam, на которой ранее был установлен OpenCV. Этот проект направлен на создание специального датчика движения для SmartThings, работающего на основе компьютерного зрения и обнаруживающего лица. Собранные данные отправляются в SmartThings по локальной сети — UPnP.

Для этого мы создаем обработчик устройства для SmartThings и программируем его. Затем мы используем скрипт Python для доступа к изображениям с камеры и обнаружения лиц, а также соединяем Raspberry Pi для обнаружения с помощью SmartThings. Вам также необходимо установить imutils , который вы можете найти на GitHub.

Ознакомьтесь с исходным кодом проекта здесь .

Проект 3: Компьютерная фотография

Этот проект предназначен для создания панорам, устранения шумов и нежелательных объектов с изображений, а также повышения видимости фотографий, сделанных при слабом освещении. Вычислительная фотография включает в себя алгоритмы шумоподавления фотографий для удаления гауссовского белого шума и искажений, восстановление фотографий для фильтрации линий, объектов и нежелательных элементов, а также распознавание номерных знаков для обнаружения номерного знака путем распознавания символов.

Проект 4: создание водяного знака на изображениях с помощью OpenCV

Этот проект представляет собой учебное пособие о том, как можно создать водяной знак — подпись, логотип или водяной штамп, чтобы предотвратить неправильное использование или нарушение авторских прав — на изображении с помощью открытой библиотеки компьютерного зрения. Это позволяет вам помечать исходное изображение водяным знаком, используя как изображение, так и текст, используя библиотеку Python OpenCV. Чтобы создать водяной знак с использованием изображения, вам необходимо определить функцию прозрачности и функцию добавления изображения. В случае текста мы импортируем функцию PIL, а затем корректируем положение текстового водяного знака.

Посмотреть проект можно здесь .

Проект 5: В поисках Уолдо

Это проект по обнаружению объектов для обнаружения Уолли на изображении путем обучения ИИ распознавать Уолдо из серии разных изображений. Затем мы используем статический подход для поиска Уолдо путем сопоставления пикселей. Это важно, потому что если вы используете шаблонное изображение, статическое сопоставление будет применяться только к этому конкретному изображению, а не к новому изображению Уолдо.

Мы вычисляем коэффициент корреляции для сопоставления шаблонов, которое принимает в качестве входных данных шаблон Уолдо и перемещает его пиксель за пикселем по изображению, на котором должен быть обнаружен Уолдо. Коэффициент корреляции показывает, соответствуют ли местоположения пикселей «хорошему» или «плохому».

Вы можете ознакомиться с проектом здесь .

Проект 6: Самоуправляемые автомобили

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

Вот исходный код для определения области интереса:

импортировать numpy как np

из matplotlib импортировать pyplot как plt

изображение = cv2.imread('../../images/input.jpg')

В [8]:

изображение.форма

Выход[8]:

(830, 1245, 3)

В [11]:

х, у = изображение.форма[:2]

В [3]:

высота, ширина = изображение.форма[:2]

# Чтобы получить координаты начального пикселя (вверху слева от прямоугольника обрезки)

start_row, start_col = int (высота * 0,25), int (ширина * 0,25)

# Чтобы получить координаты конечного пикселя (внизу справа)

end_row, end_col = int (высота * 0,75), int (ширина * 0,75)

# Использование индексации для обрезки нужной части изображения

обрезано = изображение[начальная_строка:конечная_строка, начальный_столбец:конечный_столбец]

В [6]:

строка, столбец = 1, 2

рис, оси = plt.subplots (строка, столбец, figsize = (15, 10))

fig.tight_layout()

оси [0].imshow (cv2.cvtColor (изображение, cv2.COLOR_BGR2RGB))

axs[0].set_title('Исходное изображение')

cv2.imwrite('original_image.png', изображение)

оси [1].imshow (cv2.cvtColor (обрезано, cv2.COLOR_BGR2RGB))

axs[1].set_title('Обрезанное изображение')

cv2.imwrite('cropped_image.png', обрезано)

plt.show()

Ознакомьтесь с проектом здесь .

Проект 7: Распознавание лиц и голоса для слабовидящих

Этот проект направлен на то, чтобы помочь людям с нарушениями зрения путем преобразования ввода лица в голосовой вывод с использованием Raspberry Pi 2 Model B и модуля камеры Raspberry Pi. Это один из самых популярных проектов с открытым резюме в 2022 году. Программное обеспечение позволяет слепым или слабовидящим людям обнаруживать знаки, тексты или людей в незнакомой среде и ориентироваться без посторонней помощи. Среди других требований к проекту — OpenCV и Python для проведения распознавания лиц, а распознавание голоса достигается с помощью GNU Octave.

Вы можете проверить код здесь .

Проект 8: Умная модель посещаемости

Умная система посещаемости — это удобный инструмент для онлайн-моделей образования, таких как ZoomApp. Это поможет вам отслеживать учащихся, посещающих ваш урок Zoom, отслеживая их посещаемость в режиме реального времени. Все, что нужно сделать, это получить скриншот от студента с указанием даты и загрузить его в файл Excel.

Вы можете найти учебник для этого проекта open cv здесь .

Проект 9: Замена лица с помощью OpenCV

Приложения и фильтры для смены лица уже давно пользуются популярностью в социальных сетях. От появления молодых и старых до преобразования неподвижных изображений в движущиеся изображения, такие как Instagram, Snapchat и FaceApp, все прыгнули на подножку. Приложения для смены лица относительно легко создать с помощью OpenCV и Python.

Шаги включают в себя размещение исходного изображения на целевом изображении с помощью треугольника, сформированного с помощью детектора ориентиров dlib.

Ознакомьтесь с проектом здесь .

Проект 10: Обнаружение контуров и подсчет форм

Проект обнаруживает очертания или контуры заданной формы, чтобы определить тип формы объекта. Например, если на изображении есть крышки от бутылок, вы можете использовать круглую форму, чтобы определить, сколько крышек от бутылок на изображении.

Вот исходный код для этого:

импортировать numpy как np

из matplotlib импортировать pyplot как plt

В [2]:

изображение = cv2.imread('../../images/bottlecaps.jpg')

серый = cv2.cvtColor (изображение, cv2.COLOR_BGR2GRAY)

plt.imshow (cv2.cvtColor (серый, cv2.COLOR_BGR2RGB))

plt.title('пробки'); plt.show()

cv2.imwrite('бутылочные пробки_input.jpg', серый)

Выход[2]:

Истинный

В [3]:

размытие = cv2.medianBlur (серый, 5)

круги = cv2.HoughCircles(размытие, cv2.HOUGH_GRADIENT, 1.5, 10)

для i в кругах [0,:]:

# рисуем внешний круг

cv2.circle (изображение, (я [0], я [1]), я [2], (255, 0, 0), 2)

# рисуем центр круга

cv2.circle (изображение, (я [0], я [1]), 2, (0, 255, 0), 5)

plt.imshow (cv2.cvtColor (изображение, cv2.COLOR_BGR2RGB))

plt.title('Обнаруженные круги'); plt.show()

cv2.imwrite('detected_circles.jpg', изображение)

Выход[3]:

Истинный

В [ ]:

С другой стороны, подсчет фигур включает в себя применение алгоритмов для сегментации изображений и кластеризации данных для определения точек интереса на изображении. Мы используем бинарные и приблизительные контуры с помощью функции procPolyDP.

Вы можете проверить этот открытый проект резюме здесь .

Последние мысли

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

Он также используется в дополненной реальности (AR) для обучения нахождению лиц, обнаружению форм и т. д., чтобы распознавать объекты и лица. Вы также можете создавать интересные проекты Open CV, используя простое машинное обучение, такое как устройство чтения кредитных карт, детектор рукописных цифр или устройство чтения лиц.

Однако для этого требуется понимание науки о данных и машинного обучения, особенно глубокого обучения. Если вы хотите продолжить карьеру инженера по машинному обучению, специалиста по данным или инженера по глубокому обучению, мы рекомендуем пройти программу сертификации Advanced в области машинного обучения и глубокого обучения .

Этот курс поможет вам хорошо разобраться в концепциях статистики, регрессии, алгоритмов кластеризации, нейронных сетей, обнаружения объектов и распознавания жестов. Мало того, это поможет вам приобрести опыт работы с OpenCV, Python, TensorFlow, MySQL, Keras, Excel и NumPy, среди других инструментов и библиотек программирования, и поможет выделиться из толпы.

Что такое OpenCV?

OpenCV — это библиотека с открытым исходным кодом для обработки изображений и компьютерного зрения, поддерживаемая Intel и теперь поддерживаемая сообществом разработчиков. Будучи открытым исходным кодом, OpenCV использует мощь всего сообщества разработчиков. Библиотека предназначена для оптимизации приложений реального времени, таких как распознавание объектов, видеонаблюдение, взаимодействие человека и машины, медицина и другие смежные области.

Что такое обнаружение объекта?

Обнаружение объектов — это процесс обнаружения объектов на изображениях или видео, которые не так просто обнаружить. Эта задача обычно формулируется как пример классификации. Имея изображение, мы хотим классифицировать его различные объекты (такие как автомобили, пешеходы и здания) вместе с их ограничивающими рамками, которые, в свою очередь, дадут нам их местоположение. Обнаружение объектов — это задача идентификации объектов на изображении. Целью обнаружения объектов является определение местоположения объектов на изображении (т. е. их локализация) и оценка их размера и формы. Обнаружение объектов является сложной задачей, поскольку объекты часто частично закрыты и иногда имеют огромное разнообразие внешнего вида, а также нежесткие деформации изображения.

Какой самый точный алгоритм обнаружения объектов?

Существует множество алгоритмов обнаружения объектов, и ни один из них не является точным на 100%. Алгоритмы обнаружения объектов сталкиваются с проблемой переобучения данных. Фактически, некоторые исследователи компьютерного зрения утверждают, что алгоритмы обнаружения объектов не могут быть точными на 100%. Но есть много алгоритмов, которые дают точные результаты для данного набора данных. Если вы можете позволить себе машину с графическим процессором, мы рекомендуем вам использовать реализацию SVM на основе OpenCV для обнаружения объектов. Это очень точно, быстро и работает с очень большим набором данных. Однако он не очень хорошо справляется с окклюзией. Если вы хотите создать детектор лиц, используйте реализацию каскадного классификатора Хаара в OpenCV.