AI с Python - компьютерное зрение
Компьютерное зрение занимается моделированием и воспроизведением человеческого зрения с помощью компьютерного программного обеспечения и оборудования. В этой главе вы узнаете об этом подробно.
Компьютерное зрение
Компьютерное зрение - это дисциплина, которая изучает, как реконструировать, прервать и понять трехмерную сцену на основе ее двухмерных изображений с точки зрения свойств структуры, присутствующей в сцене.
Иерархия компьютерного зрения
Компьютерное зрение делится на три основные категории:
Low-level vision - Он включает образ процесса для извлечения признаков.
Intermediate-level vision - Он включает в себя распознавание объектов и интерпретацию 3D-сцены
High-level vision - Он включает концептуальное описание сцены, например, действия, намерения и поведения.
Компьютерное зрение против обработки изображений
Обработка изображений изучает преобразование изображения в изображение. Входом и выходом обработки изображения являются изображения.
Компьютерное зрение - это построение явных, содержательных описаний физических объектов на основе их изображений. Результатом компьютерного зрения является описание или интерпретация структур в трехмерной сцене.
Приложения
Компьютерное зрение находит применение в следующих областях -
Robotics
Локализация-определение местоположения робота автоматически
Navigation
Избегание препятствий
Монтаж (вставка в отверстие, сварка, покраска)
Манипуляции (например, робот-манипулятор PUMA)
Human Robot Interaction (HRI): интеллектуальная робототехника для взаимодействия с людьми и обслуживания людей
Medicine
Классификация и обнаружение (например, классификация поражения или клеток и обнаружение опухоли)
2D / 3D сегментация
3D-реконструкция человеческого органа (МРТ или УЗИ)
Робототехническая хирургия под контролем зрения
Security
- Биометрия (радужная оболочка, отпечаток пальца, распознавание лиц)
- Наблюдение, обнаруживающее определенные подозрительные действия или поведение
Transportation
- Автономный автомобиль
- Безопасность, например, мониторинг бдительности водителя
Industrial Automation Application
- Производственный контроль (обнаружение дефектов)
- Assembly
- Считывание штрих-кода и этикеток на упаковке
- Сортировка объектов
- Понимание документа (например, OCR)
Установка полезных пакетов
Для компьютерного зрения с Python вы можете использовать популярную библиотеку под названием OpenCV(Компьютерное зрение с открытым исходным кодом). Это библиотека функций программирования, в основном предназначенных для компьютерного зрения в реальном времени. Он написан на C ++, а его основной интерфейс - на C ++. Вы можете установить этот пакет с помощью следующей команды -
pip install opencv_python-X.X-cp36-cp36m-winX.whl
Здесь X представляет версию Python, установленную на вашем компьютере, а также имеющуюся у вас win32 или 64-разрядную версию.
Если вы используете anaconda среда, затем используйте следующую команду для установки OpenCV -
conda install -c conda-forge opencv
Чтение, запись и отображение изображения
Большинству приложений CV необходимо получать изображения на входе и создавать изображения на выходе. В этом разделе вы узнаете, как читать и записывать файл изображения с помощью функций, предоставляемых OpenCV.
Функции OpenCV для чтения, отображения и записи файла изображения
OpenCV предоставляет для этой цели следующие функции:
imread() function- Это функция для чтения изображения. OpenCV imread () поддерживает различные форматы изображений, такие как PNG, JPEG, JPG, TIFF и т. Д.
imshow() function- Это функция для показа изображения в окне. Окно автоматически подгоняется под размер изображения. OpenCV imshow () поддерживает различные форматы изображений, такие как PNG, JPEG, JPG, TIFF и т. Д.
imwrite() function- Это функция для записи изображения. OpenCV imwrite () поддерживает различные форматы изображений, такие как PNG, JPEG, JPG, TIFF и т. Д.
пример
В этом примере показан код Python для чтения изображения в одном формате - отображения его в окне и записи того же изображения в другом формате. Рассмотрим шаги, показанные ниже -
Импортируйте пакет OpenCV, как показано -
import cv2
Теперь для чтения конкретного изображения используйте функцию imread () -
image = cv2.imread('image_flower.jpg')
Для показа изображения используйте imshow()функция. Имя окна, в котором вы можете увидеть изображение, будетimage_flower.
cv2.imshow('image_flower',image)
cv2.destroyAllwindows()
Теперь мы можем записать то же изображение в другой формат, например .png, используя функцию imwrite () -
cv2.imwrite('image_flower.png',image)
Вывод True означает, что изображение было успешно записано как файл .png также в той же папке.
True
Примечание. Функция destroyallWindows () просто уничтожает все созданные нами окна.
Преобразование цветового пространства
В OpenCV изображения не сохраняются с использованием обычного цвета RGB, а хранятся в обратном порядке, то есть в порядке BGR. Следовательно, цветовой код по умолчанию при чтении изображения - BGR. ВcvtColor() функция преобразования цвета для преобразования изображения из одного цветового кода в другой.
пример
Рассмотрим этот пример для преобразования изображения из BGR в оттенки серого.
Импортируйте OpenCV пакет, как показано -
import cv2
Теперь для чтения конкретного изображения используйте функцию imread () -
image = cv2.imread('image_flower.jpg')
Теперь, если мы увидим это изображение, используя imshow() функция, то мы видим, что это изображение находится в BGR.
cv2.imshow('BGR_Penguins',image)
Теперь используйте cvtColor() функция для преобразования этого изображения в оттенки серого.
image = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
cv2.imshow('gray_penguins',image)
Обнаружение края
Люди, увидев грубый набросок, могут легко узнать многие типы объектов и их позы. Вот почему края играют важную роль в жизни людей, а также в приложениях компьютерного зрения. OpenCV предоставляет очень простую и полезную функцию под названиемCanny()для обнаружения краев.
пример
В следующем примере показано четкое обозначение краев.
Импортируйте пакет OpenCV, как показано -
import cv2
import numpy as np
Теперь, чтобы прочитать конкретное изображение, используйте imread() функция.
image = cv2.imread('Penguins.jpg')
Теперь используйте Canny () функция определения краев уже прочитанного изображения.
cv2.imwrite(‘edges_Penguins.jpg’,cv2.Canny(image,200,300))
Теперь для отображения изображения с краями используйте функцию imshow ().
cv2.imshow(‘edges’, cv2.imread(‘‘edges_Penguins.jpg’))
Эта программа Python создаст изображение с именем edges_penguins.jpg с обнаружением края.
Распознавание лиц
Обнаружение лиц - одно из увлекательных приложений компьютерного зрения, которое делает его более реалистичным и футуристическим. OpenCV имеет встроенное средство для обнаружения лиц. Мы собираемся использоватьHaar каскадный классификатор для распознавания лиц.
Каскадные данные Хаара
Нам нужны данные для использования каскадного классификатора Хаара. Вы можете найти эти данные в нашем пакете OpenCV. После установки OpenCv вы можете увидеть имя папкиhaarcascades. Для другого приложения будут файлы .xml. Теперь скопируйте их все для другого использования и вставьте затем в новую папку в текущем проекте.
Example
Ниже приведен код Python, использующий Каскад Хаара для обнаружения лица Амитабха Бачана, показанный на следующем изображении.
Импортируйте OpenCV пакет, как показано -
import cv2
import numpy as np
Теперь используйте HaarCascadeClassifier для определения лица -
face_detection=
cv2.CascadeClassifier('D:/ProgramData/cascadeclassifier/
haarcascade_frontalface_default.xml')
Теперь, чтобы прочитать конкретное изображение, используйте imread() функция -
img = cv2.imread('AB.jpg')
Теперь преобразуйте его в оттенки серого, потому что он принимает серые изображения -
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
Теперь, используя face_detection.detectMultiScale, выполнить фактическое обнаружение лица
faces = face_detection.detectMultiScale(gray, 1.3, 5)
Теперь нарисуйте прямоугольник вокруг всего лица -
for (x,y,w,h) in faces:
img = cv2.rectangle(img,(x,y),(x+w, y+h),(255,0,0),3)
cv2.imwrite('Face_AB.jpg',img)
Эта программа Python создаст изображение с именем Face_AB.jpg с распознаванием лиц, как показано
Обнаружение глаз
Обнаружение глаз - еще одно увлекательное приложение компьютерного зрения, которое делает его более реалистичным и футуристичным. OpenCV имеет встроенное средство для обнаружения глаз. Мы собираемся использоватьHaar cascade классификатор для обнаружения глаз.
пример
В следующем примере показан код Python с использованием Haar Cascade для обнаружения лица Амитабха Бачана, показанного на следующем изображении:
Импортируйте пакет OpenCV, как показано -
import cv2
import numpy as np
Теперь используйте HaarCascadeClassifier для определения лица -
eye_cascade = cv2.CascadeClassifier('D:/ProgramData/cascadeclassifier/haarcascade_eye.xml')
Теперь, чтобы прочитать конкретное изображение, используйте imread() функция
img = cv2.imread('AB_Eye.jpg')
Теперь преобразуйте его в оттенки серого, потому что он принимает серые изображения -
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
Теперь с помощью eye_cascade.detectMultiScale, выполнить фактическое обнаружение лица
eyes = eye_cascade.detectMultiScale(gray, 1.03, 5)
Теперь нарисуйте прямоугольник вокруг всего лица -
for (ex,ey,ew,eh) in eyes:
img = cv2.rectangle(img,(ex,ey),(ex+ew, ey+eh),(0,255,0),2)
cv2.imwrite('Eye_AB.jpg',img)
Эта программа Python создаст изображение с именем Eye_AB.jpg с обнаружением глаз, как показано -