Учебники

AI с Python — компьютерное видение

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

Компьютерное зрение

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

Иерархия компьютерного зрения

Компьютерное зрение делится на три основные категории следующим образом:

  • Низкоуровневое зрение — включает изображение процесса для извлечения объектов.

  • Видение промежуточного уровня — включает распознавание объектов и интерпретацию трехмерных сцен

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

Низкоуровневое зрение — включает изображение процесса для извлечения объектов.

Видение промежуточного уровня — включает распознавание объектов и интерпретацию трехмерных сцен

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

Computer Vision Vs Обработка изображений

Обработка изображений изучает преобразование изображения в изображение. Вход и выход обработки изображения оба изображения.

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

Приложения

Компьютерное зрение находит применение в следующих областях —

робототехника

  • Локализация — определить местоположение робота автоматически

  • навигация

  • Избегание препятствий

  • Сборка (колышек, сварка, покраска)

  • Манипуляции (например, робот-манипулятор PUMA)

  • Human Robot Interaction (HRI): интеллектуальная робототехника для взаимодействия и обслуживания людей

Локализация — определить местоположение робота автоматически

навигация

Избегание препятствий

Сборка (колышек, сварка, покраска)

Манипуляции (например, робот-манипулятор PUMA)

Human Robot Interaction (HRI): интеллектуальная робототехника для взаимодействия и обслуживания людей

Лекарственное средство

  • Классификация и обнаружение (например, классификация повреждения или клеток и обнаружение опухоли)

  • 2D / 3D сегментация

  • 3D реконструкция человеческого органа (МРТ или УЗИ)

  • Визуальная робототехника

Классификация и обнаружение (например, классификация повреждения или клеток и обнаружение опухоли)

2D / 3D сегментация

3D реконструкция человеческого органа (МРТ или УЗИ)

Визуальная робототехника

Безопасность

  • Биометрия (радужная оболочка, отпечаток пальца, распознавание лица)
  • Наблюдение — обнаружение определенных подозрительных действий или поведения

Транспорт

  • Автономное транспортное средство
  • Безопасность, например, мониторинг бдительности водителя

Применение промышленной автоматизации

  • Промышленный контроль (обнаружение дефектов)
  • сборочный
  • Считывание штрих-кода и этикетки на упаковке
  • Сортировка объектов
  • Понимание документа (например, OCR)

Установка полезных пакетов

Для компьютерного зрения с Python вы можете использовать популярную библиотеку OpenCV (Open Source Computer Vision). Это библиотека функций программирования, в основном предназначенная для компьютерного зрения в реальном времени. Он написан на 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 () — это функция для чтения изображения. OpenCV imread () поддерживает различные форматы изображений, такие как PNG, JPEG, JPG, TIFF и т. Д.

  • Функция imshow () — это функция для отображения изображения в окне. Окно автоматически подгоняется под размер изображения. OpenCV imshow () поддерживает различные форматы изображений, такие как PNG, JPEG, JPG, TIFF и т. Д.

  • Функция imwrite () — это функция для записи изображения. OpenCV imwrite () поддерживает различные форматы изображений, такие как PNG, JPEG, JPG, TIFF и т. Д.

Функция imread () — это функция для чтения изображения. OpenCV imread () поддерживает различные форматы изображений, такие как PNG, JPEG, JPG, TIFF и т. Д.

Функция imshow () — это функция для отображения изображения в окне. Окно автоматически подгоняется под размер изображения. OpenCV imshow () поддерживает различные форматы изображений, такие как PNG, JPEG, JPG, TIFF и т. Д.

Функция imwrite () — это функция для записи изображения. 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)

penguine

Теперь используйте функцию 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 создаст изображение с именемdge_penguins.jpg с обнаружением краев.

края пингвинов

Обнаружение Лица

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

Данные каскада Хаара

Нам нужны данные, чтобы использовать каскадный классификатор Хаара. Вы можете найти эти данные в нашем пакете OpenCV. После установки OpenCv вы можете увидеть имя папки haarcascades . Там были бы .xml файлы для другого приложения. Теперь скопируйте их все для различного использования и вставьте в новую папку в текущем проекте.

пример

Ниже приведен код 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 с распознаванием лиц, как показано

Face AB

Обнаружение глаз

Обнаружение глаз — еще одно увлекательное применение компьютерного зрения, которое делает его более реалистичным и футуристическим. OpenCV имеет встроенное средство для обнаружения глаз. Мы собираемся использовать каскадный классификатор Хаара для обнаружения глаз.

пример

В следующем примере приведен код Python, использующий каскад Хаара для обнаружения лица Амитабха Бачча, приведенный на следующем рисунке:

Haar AB Face

Импортируйте пакет 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 с обнаружением глаз, как показано на рисунке —