Авторы: - Нил Патель, 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 в основном ориентирован на приложения компьютерного зрения, такие как обработка изображений, искусственный интеллект, захват видео и анализ обнаружения объектов.