Авторы: - Нил Патель, Pranaypatel1707.

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

При интеграции с различными библиотеками, такими как NumPy, python может обрабатывать структуру массива OpenCV для анализа. Чтобы идентифицировать шаблон изображения и его различные функции, мы используем векторное пространство и выполняем математические операции над этими функциями.

Установка OpenCV: -

Установите OpenCV с помощью Anaconda:-

Первый шаг — загрузить последнюю версию графического установщика Anaconda для Windows с ее официального сайта. Вам предлагается установить 3.7, работающую с Python 3. После его установки откройте приглашение Anaconda и введите следующую команду.

conda install -c conda-forge opencv

Установите OpenCV в Windows и Mac через pip:-

Необходимо установить Python в систему и установить OpenCV с помощью команды pip:

pip install opencv-contrib-python --upgrade

Мы можем установить его без дополнительных модулей с помощью следующей команды (рекомендуется):

pip install opencv-python

Приведенную выше команду можно использовать при установке библиотеки Python в соответствующей среде Python IDE, такой как VSCODE, PYCHARM и т. д. Перейдя в соответствующую командную строку/терминал среды разработки Python, в которой мы хотим установить, введите эту команду, чтобы загрузить библиотеку :- pip install opencv-python

Некоторые важные функции OpenCV, с которыми мы можем играть с изображениями: -

Чтение и сохранение изображения:-

Изображение Чтение и сохранение изображений являются одними из самых основных операций редактирования изображений.

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

Для чтения используется функция Imread(), а для сохранения изображения используется функция Imwrite().

Помимо Cv2, с помощью таких модулей, как matplotlib, PIL, urllib и pickle, можно использовать для чтения и сохранения изображений.

Код:-

import cv2
#imread() method for reading image
img = cv2.imread(r'/Users/neelpatel/Desktop/sem4/cat.png', 1)
# This will display the image
cv2.imshow('image', img)
cv2.waitKey(3)  # This is necessary to be required so that the image doesn't close immediately.
# for saving image
cv2.imwrite('/Users/neelpatel/Desktop/sem 1 to 3/cat_copy.png',img)
print("Image is being saved “)

Выход:-

Так что с помощью Open-cv читать и сохранять файлы стало совсем просто.

Поворот изображения:-

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

Параметры:-

Rotate(): используется для указания того, на сколько градусов будут поворачиваться изображения.

Чтобы дать функцию использования 90 градусов

Image = cv2.rotate(src,cv2.cv2.ROTATE_90_CLOCKWISE)

Для 180 градусов

image = cv2.rotate(src, cv2.ROTATE_180)

Для 270 градусов

Image = cv2.rotate(src,cv2.cv2.ROTATE_90_COUNTERCLOCKWISE)

Путь: используется для указания пути к требуемому файлу.

Код для поворота на 180 градусов: -

# importing cv2
import cv2
# path
path = r'/Users/neelpatel/Desktop/sem4/parrot.png'
# For reading image
src = cv2.imread(path)
# Output file name
window_name = 'Image'
# Image will rotate by 180 degrees clockwise
image = cv2.rotate(src, cv2.ROTATE_180)
# Displaying the image
cv2.imshow(window_name, image)
cv2.waitKey(0)

Выход:-

Код для поворота на 270 градусов: -

# importing cv2
import cv2
# path
path = r'/Users/neelpatel/Desktop/sem4/parrot.png'
# For reading image
src = cv2.imread(path)
# Output file name
window_name = 'reverse_parrot'
# Image will rotate by 270 degrees clockwise
image = cv2.rotate(src, cv2.ROTATE_90_COUNTERCLOCKWISE)
# Displaying the image
cv2.imshow(window_name, image)
cv2.waitKey(0)

Выход:-

Рисование изображений:-

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

Ниже приведен синтаксис для рисования круга: -

Cv2.circlr(img,центр,радиус,цвет[,толщина[,lineType[,сдвиг]]])

1). img- Представляет данное изображение.

2). центр- центр круга

3). радиус- Радиус круга

4).color- цвет круга

5).толщина- Обозначает толщину контура круга, если она положительна.

6). lineType — определяет тип границы круга.

7). shift- Представляет количество дробных битов в координате центра и значение радиуса.

Код для круга: -

import numpy as np
import cv2
# for reading Image
img = cv2.imread(r"/Users/neelpatel/Desktop/sem4/panda.png",1)
# circle function to draw circle
cv2.circle(img,(80,80), 80, (0,255,0), -1)
# to show image
cv2.imshow('image',img)
cv2.waitKey(0)
# to destroy all windows
cv2.destroyAllWindows()

Выход:-

Эллипс: -

Синтаксис эллипса: -

cv2.ellipse (img, центр, оси, угол, startAngle, endAngle, цвет [, толщина [, lineType [, сдвиг]]])

1).img — представляет изображение.

2).box — функция используется для рисования эллипса в изогнутом прямоугольнике.

3).color — обозначает цвет эллипса.

4).angle- Обозначает угол поворота.

5).startAngle — обозначает начальный угол эллиптической дуги в градусах.

6).endAngle — Обозначает конечный угол эллиптической дуги в градусах.

7).thickness — используется для рисования толщины контура дуги эллипса, если значение положительное. В противном случае это указывает, что должен быть нарисован заполненный эллипс.

8).lineType — Обозначает тип границы эллипса.

9).shift — представляет собой количество дробных битов в координатах центра и значений осей.

Код для эллипса: -

import numpy as np
import cv2
# for reading Image
img = cv2.imread(r"/Users/neelpatel/Desktop/sem4/panda.png",1)
# ellipse function to draw ecllips
cv2.ellipse(img, (250, 150), (80, 20), 5, 0, 360, (0, 0, 255), -1)
# to show image
cv2.imshow('image',img)
cv2.waitKey(0)
# to destroy all windows
cv2.destroyAllWindows()

Обнаружение осторожных краев:-

Приложение

На изображении точки, в которых яркость изображения резко меняется или имеет разрывы, называются краями.

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

Теория

Это многоэтапный алгоритм, состоящий из следующих этапов:

1. Шумоподавление. Обнаружение краев чувствительно к шуму на изображении. Итак, во-первых, мы удаляем шум с помощью фильтра Гаусса 5x5.

2. Нахождение градиента интенсивности изображения. Затем изображение фильтруется как в горизонтальном, так и в вертикальном направлениях. Из этих двух изображений мы можем найти градиент края и направление для каждого пикселя.

3. Немаксимальное подавление. Затем изображение сканируется для удаления нежелательных пикселей, которые могут не иметь границ. Для этого проверяется каждый пиксель, является ли он локальным максимумом в своей окрестности в направлении градиента.

4. Пороговое значение гистерезиса. Теперь мы решаем, какие ребра на самом деле являются ребрами, а какие нет. Мы берем два пороговых значения, minVal и maxVal. Края с градиентом интенсивности больше, чем maxVal, точно являются краями. Точно так же те, у которых градиент интенсивности ниже minVal, точно не являются краями.

Код

Syntax-edges = cv2.Canny('/path/to/img', minVal, maxVal, апертураSize, L2gradient)

Параметры-

· /path/to/img: местоположение изображения (обязательно)

· minVal: Минимальный градиент интенсивности (обязательно)

· maxVal: Максимальный градиент интенсивности (обязательно)

· размер апертуры: (необязательно)

  • L2gradient: Значение по умолчанию — false. Если true Canny (), обеспечивает большую точность за счет ресурсов.

Код:-

import cv2
 
 image = cv2.imread(r'C:\Users\CS3306TX\Downloads\download (8).jpg')
 edges = cv2.Canny(image, 100, 200)
 
 cv2.imshow("Edge Detected Image", edges)
 cv2.imshow("Original Image", image)
 cv2.waitKey(0)  # waits until a key is pressed
 cv2.destroyAllWindows()  # destroys the window showing image

Выход:-

Размытие OpenCV

Приложение

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

Теория

Как и одномерные сигналы, изображения можно фильтровать с помощью фильтров нижних частот (ФНЧ) или фильтров высоких частот (ФВЧ). LPF используется для удаления шума, размытия изображений и т. д. HPF используется для поиска краев на изображениях.

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

Существуют различные техники размытия

1. Усреднение OpenCV: -

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

Синтаксис: cv2.blur(src, dst, ksize, привязка, borderType)

Параметры-

· src — исходное изображение

· dst — целевое изображение

· ksize — размер ядра

· якорь — обозначает точки привязки

· borderType — Тип границы, который будет использоваться для вывода

Код:-

import cv2
im = cv2.imread(r'C:\Users\CS3306TX\Downloads\kingfisher-2046453__340.webp')
cv2.imshow('Original Image',im)
cv2.imshow('Blurred Image', cv2.blur(im, (3,3)))
cv2.waitKey(0)
cv2.destroyAllWindows()

Выход:-

2. Медианное размытие OpenCV: -

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

Синтаксис: cv2.medianBlur(src, dst, ksize)

Параметры-

· src — исходное изображение

· dst — целевое изображение

· ksize — размер ядра

Код:-

import cv2
 import numpy
 # read image
 img = cv2.imread(r'C:\Users\CS3306TX\Downloads\kingfisher-2046453__340.webp', 1)
 # apply gaussian blur on src image
 dst = median = cv2.medianBlur(img,5)
 # display input and output image
 cv2.imshow("Median Blurred image", numpy.hstack((img, dst)))
 cv2.waitKey(0)  # waits until a key is pressed
 cv2.destroyAllWindows()  # destroys the window showing image

Выход:-

3. Размытие по Гауссу OpenCV: -

Очень эффективно удаляет гауссовский шум с изображения. В этом методе вместо блочного фильтра используется ядро ​​Гаусса. Стандартное отклонение в направлениях X и Y также необходимо указать вместе с высотой и шириной ядра.

Синтаксис: cv2.GaussianBlur(src, ksize, sigmaX[, dst[, sigmaY[, borderType]]])

Параметры-

· src — исходное изображение

· dst — целевое изображение

· ksize — размер ядра

· sigmaX — стандартное отклонение ядра по оси X

· sigmaY — стандартное отклонение ядра по оси Y. Если значение sigmaY равно 0, значение sigmaX принимается за sigmaY.

· borderType — Заданные границы изображения, когда ядро ​​применяется к границам изображения.

Код:-

import cv2
 import numpy
 
 # read image
 src = cv2.imread(r'C:\Users\CS3306TX\Downloads\kingfisher-2046453__340.webp', 1)
 # apply gaussian blur on src image
 dst = cv2.GaussianBlur(src, (5, 5), cv2.BORDER_DEFAULT)
 
 # display input and output image
 cv2.imshow("Gaussian Smoothing", numpy.hstack((src, dst)))
 cv2.waitKey(0)  # waits until a key is pressed
 cv2.destroyAllWindows()  # destroys the window showing image

Выход:-

Захват видео OpenCV

Код:-

Выход:-

Отображаемый текст OpenCV

Код:-

Выход:-

Совместное использование Open CV и Dlib для создания окна распознавания лиц

мы будем использовать обе библиотеки,

  • таким образом, мы будем снимать наше видео и отображать его с помощью Open CV.
  • распознавать ориентиры на лице с помощью Dlib и shape_predictor_68_face_landmarks.dat, что важно при работе над проектом по обнаружению лиц или проектом, касающимся обнаружения движения или объектов.

Код:-

Выход:-

Все рассмотренные выше примеры функций Open-CV доступны на Github для изучения и изучения.



Спасибо за прочтение, надеюсь, вы что-то узнали! Любые комментарии, сомнения или предложения очень ценны для меня.



ЗАКЛЮЧЕНИЕ:-

  • OpenCV — это огромная библиотека с открытым исходным кодом. В OpenCV CV — это аббревиатура от Computer Vision, которая помогает компьютерам понимать содержание цифровых изображений, таких как фотографии и видео.
  • OpenCV в основном ориентирован на приложения компьютерного зрения, такие как обработка изображений, искусственный интеллект, захват видео и анализ обнаружения объектов.