Хотите узнать об OpenCV? Давай, давай развернем!

Добро пожаловать назад! Итак, сегодня мы сосредоточимся на компьютерном зрении с использованием OpenCV в Python. Ожидается, что вы будете знать основы программирования на Python и NumPy, даже если вы этого не сделаете, это нормально! Только не забудьте выучить это потом. Хорошо, так что давайте сразу же приступим!

Что такое компьютерное зрение?

Я считаю, что все вы использовали Facebook, и в тот момент, когда вы загружаете какое-либо изображение на Facebook, появляется функция Auto Tag, которая использует распознавание лиц, чтобы предложить имя вашего друга на картинке. Но как это происходит? Да! Все это происходит из-за компьютерного зрения. Компьютерное зрение - это междисциплинарная область, которая позволяет компьютерам получать высокоуровневое понимание цифровых изображений или видео. Он в основном стремится понять и автоматизировать задачи, которые может выполнять человеческая зрительная система.

Как видят компьютеры?

Нормальный человек может легко посмотреть и распознать изображение заранее, но когда дело доходит до компьютеров, ответ - НЕТ! Компьютер видит только матрицы чисел. Числа внутри матрицы могут варьироваться от 0 до 255, и когда дело доходит до цветного изображения, ему необходимо будет прочитать три таких матрицы (3 канала), каждая из которых относится к Красному, Зеленому и Синему. Каждое число внутри матрицы связано с интенсивностью яркости этого конкретного пикселя, и для цветного изображения все три матрицы накладываются друг на друга, образуя трехмерную матрицу. Короче говоря, компьютер интерпретирует цветное изображение как трехмерную матрицу! То же самое и с изображениями в градациях серого, но, в отличие от цветных изображений, изображения в оттенках серого имеют только один канал, образующий 2D-матрицу! Поэтому, когда я говорю, что размер цветного изображения составляет 1280x720, это означает, что есть три канала или три матрицы, содержащие 1280 строк и 720 столбцов, аналогично, когда я говорю, размер изображения в градациях серого составляет 480x360, это означает, что есть 480 строк, 360 столбцов и один канал. Если вы хотите узнать размер изображения, все, что вам нужно сделать, это умножить количество строк, столбцов и каналов. Подводя итог, компьютер будет считывать цветное изображение как 3D-матрицу, а изображение в оттенках серого как 2D-матрицу.

Что такое OpenCV?

OpenCV - это в основном библиотека, используемая для компьютерного зрения. Впервые он был разработан в 1999 году и выпущен в 2000 году в Intel Гэри Брэдом Скаем. OpenCV поддерживает широкий спектр языков программирования, таких как Python, C ++, Java и т. Д., А также поддерживает различные платформы, включая Windows, Linux и т. Д. Хитрость заключается в том, чтобы преобразовать все изображения (из или в) матрицы NumPy или то, что мы называем массивами NumPy, и это упрощает интеграцию с другими библиотеками, использующими NumPy, например, SciKit и Matplotlib.

Основы OpenCV

Здесь мы будем использовать питон. Итак, прежде всего, вы должны импортировать OpenCV в Python с помощью команды import cv2. Но если вы новичок в этом, вам, возможно, придется установить OpenCV перед его импортом, все, что вам нужно сделать, это ввести pip3 install opencv-python в командной строке (Windows) или в Терминале (Linux).

cv2.imread («image.jpg», 0) позволяет нам читать изображение в формате оттенков серого.

cv2.imread («image.jpg», 1) позволяет нам читать изображение в формате RGB. Мы сохраняем его в переменной img.

print (img) показывает трехмерный массив, связанный с изображением.

print (type (img)) показывает тип массива, которым является numpy.ndarray.

print (img.shape) показывает форму массива, который включает количество строк, столбцов и каналов.

cv2.imshow («Введите заголовок», img) открывает окно для отображения изображения.

cv2.waitKey (0) ожидает, пока пользователь не нажмет клавишу.

cv2.waitKey (100) ждет 100 миллисекунд

cv2.destroyAllWindows () закрывает окно на основе waitKey.

cv2.resize (img, (600,600)) помогает нам изменить размер изображения.

cv2.resize (img, (int (img.shape [1] / 2), int (img.shape [0] / 2))) изменит размер изображения вдвое по сравнению с исходным размером изображения, аналогично вы можете умножить на два, чтобы увеличить размер вдвое.

Система распознавания лиц

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

  1. Вам нужен образ.
  2. Вам необходимо создать или загрузить каскадный классификатор, содержащий черты лица. Это в основном помогает нам найти, где на самом деле находится лицо! Вы всегда можете использовать Google, чтобы найти различные каскады Хаара, которые вы, возможно, захотите обнаружить. А пока воспользуемся каскадом лиц.
  3. Мы будем использовать OpenCV для чтения файла изображения, а также файла функций и преобразования их в массивы NumPy.
  4. Затем он будет искать значения строк и столбцов N-мерного массива лица NumPy, который в основном помогает нам найти координаты лица и прямоугольника.
  5. Наконец, мы отобразим изображение с прямоугольным лицевым боксом.

cv2.CascadeClassifier («имя классификатора») используется для чтения XML-файла Face Cascade Classifier.

cv2.imread («путь к изображению»), как мы обсуждали ранее, предназначен для чтения изображения.

cv2.cvtColor (img1, cv2.COLOR_BGR2GRAY) преобразует изображение в оттенки серого.

face_cascade.detectMultiScale (gray_img, scaleFactor = 1.05, minNeighbors = 5) используется для поиска координат черт лица на изображении. detectMultiScale - это метод OpenCV для поиска координат Face-Rectangle. scaleFactor уменьшает значение фигуры NumPy на 5%, пока не найдет лицо.

cv2.rectangle (img1, (x, y), (x + w, y + h), (0,255,0), 3) - это метод создания прямоугольника лица, который содержит, объект изображения, координаты (x, y и x + w, y + h), значения RGB контура прямоугольника и ширина прямоугольника в качестве параметров.

Наконец, как мы уже видели, мы закончим это следующим:

cv2.imshow («Система распознавания лиц», img1)
cv2.waitKey ()
cv2.destroyAllWindows ()

И с этим, я считаю, мы рассмотрели наиболее важные аспекты основ OpenCV. Как я уже упоминал, OpenCV не ограничивается только изображениями, с ним можно делать много всего. Так что не останавливайтесь, наберитесь терпения и исследуйте больше! Щелкните здесь, если вам нужен исходный код всех приведенных выше примеров. А пока береги себя :)

GitHub

LinkedIn

Твиттер

Инстаграм