Opencv что это за программа

Библиотека OpenCV с Python

В этом руководстве мы узнаем, как использовать библиотеку OpenCV в Python. OpenCV – это библиотека с открытым исходным кодом, которая поддерживается несколькими платформами, включая Windows, Linux и MacOS, а также доступна для использования на нескольких других языках. Однако он чаще всего используется в Python для приложений машинного обучения, особенно в области компьютерного зрения.

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

Рассмотрим установку OpenCV на Mac, Windows и Linux, операции с изображениями, арифметику изображений, сглаживание изображений и геометрические преобразования с использованием OpenCV.

Установка OpenCV в Python

Примечание. Поскольку мы собираемся использовать OpenCV на языке Python, неявно требуется, чтобы на вашей рабочей станции уже был установлен Python (версия 3). В зависимости от вашей ОС выполните одну из следующих команд, чтобы установить библиотеку OpenCV в вашей системе:

【python】opencv 2小時初學者教學 | 影像辨識 | 影像處理 | 人臉辨識 | 電腦視覺

Windows

$ pip install opencv-python

MacOS

$ brew install opencv3 —with-contrib —with-python3

Linux

$ sudo apt-get install libopencv-dev python-opencv

Чтобы проверить, была ли ваша установка успешной, выполните следующую команду либо в оболочке Python, либо в командной строке или терминале:

import cv2

Если вы не получаете сообщение об ошибке при импорте cv2, значит, он был установлен правильно.

Основные операции с изображениями

Теперь, когда мы установили OpenCV на наши рабочие станции, давайте займемся некоторыми функциями, которые предлагает OpenCV.

Отображение изображения

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

  1. Путь к изображению (работают как абсолютные, так и относительные пути).
  2. Режим чтения (чтение, запись и т.д.).

Для чтения или загрузки изображения мы будем использовать функцию cv2.imread(), имеющую два варианта. Первый – IMREAD_GRAYSCALE, который, как следует из названия, преобразует изображение в оттенки серого перед его чтением. Второй – IMREAD_UNCHANGED, который загружает изображение без вырезания альфа-канала. По умолчанию IMREAD_COLOR просто считывает цветное изображение, используя только каналы RGB.

Приведем пример кода:

import cv2 my_bike = cv2.imread(‘bike.png’)

Это загрузит изображение велосипеда из файловой системы и сохранит его в переменной my_bike для дальнейших операций.

Примечание. Если вы получили сообщение об ошибке из приведенного выше кода, это может быть вызвано только тремя причинами. Во-первых, вы указали неверный путь, во-вторых, указанный вами файл изображения не существует, а во-вторых, что тип изображения (jpg, jpeg и png) в пути к изображению неверен.

Теперь давайте отобразим только что прочитанное изображение. Это можно сделать с помощью функции cv2.imshow().

cv2.imshow(‘my_bike’, my_bike)

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

Сохранение

Сохранение изображения – очень часто используемая функция, так как нам может потребоваться обновить изображение и сохранить изменения в файловой системе для дальнейшего использования. OpenCV имеет функцию cv2.imwrite() для сохранения изображений.

cv2.imwrite(‘bike.png’, my_bike)

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

Арифметические операции

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

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

Давайте закодируем эти два примера:

Добавление

import cv2 # Read in the two images image_1 = cv2.imread(‘bike.jpg’) image_2 = cv2.imread(‘car.jpg’) # Sum the two image arrays for all channels result = cv2.add(image_1, image_2) cv2.imshow(‘result’, result) cv2.waitKey(0) cv2.destroyAllWindows()

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

Смешивание

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

Давайте закодируем это, чтобы прояснить дальше:

import cv2 # Read in the two images image_1 = cv2.imread(‘bike.jpg’) image_2 = cv2.imread(‘car.jpg’) result = cv2.addWeighted(image_1, 0.9, image_2, 0.1) cv2.imshow(‘result’, result) cv2.waitKey(0) # Wait for the user to press a key before continuing cv2.destroyAllWindows()

Сумма весов, присвоенных функции addWeighted, должна быть равна 1.0. Вы также можете указать в конце скалярное значение, которое будет добавлено ко всем значениям пикселей полученного изображения.

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

Сглаживание

Сглаживание изображений – очень полезная функция, которая в основном выполняется перед передачей изображений в модель машинного обучения. В основном это делается для удаления шумовых и высокочастотных элементов из изображений путем пропускания изображения через фильтр нижних частот. Существует множество фильтров, в том числе прямоугольный фильтр (усредняющий фильтр), медианный фильтр, модовый фильтр, фильтр Гаусса и многие другие. Однако, чтобы понять сглаживание изображения и то, как это сделать с помощью OpenCV, мы рассмотрим только блочный фильтр.

Допустим, у вас есть изображение размером 10×10, и вы хотите пропустить его через фильтр 3×3 или усредняющий, как бы вы это сделали?

Вы начнете с верхнего левого угла изображения, поместите туда свой фильтр 3×3 и замените центральный элемент средним значением всех 9 элементов. Это был первый шаг, теперь вы переместите свой фильтр на один шаг вправо и повторите тот же процесс, пока не покроете все изображение. Ниже для справки приведены примеры изображения 10×10 и усредняющего фильтра 3×3:

Примеры изображения 10x10

Фильтр применяется к изображению 10×10:

Читайте также:
Программа gog galaxy что это

Применение фильтра к изображению 10x10

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

import cv2 # Load the original image original_image = cv2.imread(‘my_bike.png’) # Filter by passing image through 3×3 averaging filter average_image = cv2.blur(original_image,(3,3)) # Apply 3×3 gaussian filter on the original image gaussian_image = cv2.GaussianBlur((original_image,(3,3),0)) # Apply 3×3 median filter on the original image median_image = cv2.medianBlur(original_image,3)

Примечание. Вы можете просмотреть полученные изображения, используя следующий дополнительный код:

import matplotlib.pyplot as plt plt.imshow(average_image) plt.show()

Преобразование изображений

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

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

Масштабирование

Проще говоря, масштабирование – это просто изменение размера вашего изображения, то есть его увеличение или уменьшение. resize – это функция, используемая для масштабирования изображений в OpenCV. У изменения размера есть три типа: INTER_CUBIC, INTER_LINEAR и INTER_AREA. Давайте закодируем пример, использующий эти функции для масштабирования. Пожалуйста, внимательно прочтите код, комментарии и описания, поскольку они объяснят, что именно происходит в коде:

import cv2 import numpy as np import matplotlib.pyplot as plt image = cv2.imread(‘my_bike.jpg’) # Scale up/expand both width and height by factor of 2 result_1 = cv2.resize(image, None, fx=2, fy=2, interpolation=cv2.INTER_CUBIC) # Scale down/shrink both width and height by factor of 2 result_2 = cv2.resize(image, None, fx=2, fy=2, interpolation=cv2.INTER_AREA) # Display the resulting images plt.imshow(result_1) plt.imshow(result_2) plt.show()

Здесь, в функции изменения размера, параметр fx in представляет масштабный коэффициент для ширины, fy представляет масштабный коэффициент по высоте, а интерполяция определяет функцию, которая будет использоваться для масштабирования (сжатие или расширение).

Вращение

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

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

import cv2 import matplotlib.pyplot as plt # Load the image of a bike image = cv2.imread(‘my_bike.jpg’,0) # Rows and columns r, c = image.shape matrix = cv2.getRotationMatrix2D((cols/2,rows/2), 180, 1) result = cv2.warpAffine(image,matrix,(c,r)) # Display resulting rotation plt.imshow(result) plt.show()

В функции getRotationMatrix2D 180 указывает степень поворота изображения, 1 – коэффициент масштабирования, вызов функции вернет матрицу поворота в переменной matrix.

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

Заключение

В заключение давайте еще раз подчеркнем некоторые важные моменты, которые мы обсуждали в этой статье. OpenCV – это библиотека, доступная на нескольких языках, которая в основном используется вместе с NumPy, SciPy и Matplotlib, как мы видели в некоторых из приведенных выше примеров. Некоторые из его функций такие же, как в Matlab, и он также поддерживает векторизованные операции, что увеличивает вычислительную эффективность.

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

Источник: tonais.ru

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

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

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

Базовые алгоритмы обработки изображений: интерпретации изображений, калибровки камеры по эталону, устранение оптических искажений, определение сходства, анализ перемещения объекта, определение формы объекта и слежение за объектом, 3D-реконструкция, сегментация объекта, распознавание жестов.

Скачать библиотеку можно на официальном сайте http://sourceforge.net/projects/opencvlibrary/

Структура библиотеки OpenCV

cxcore — ядро
* содержит базовые структуры данных и алгоритмы:
— базовые операции над многомерными числовыми массивами
— матричная алгебра, математические ф-ции, генераторы случайных чисел
— Запись/восстановление структур данных в/из XML
— базовые функции 2D графики

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

Highgui — модуль для ввода/вывода изображений и видео, создания пользовательского интерфейса
— захват видео с камер и из видео файлов, чтение/запись статических изображений.
— функции для организации простого UI (все демо приложения используют HighGUI)

Cvaux — экспериментальные и устаревшие функции
— пространств. зрение: стерео калибрация, само калибрация
— поиск стерео-соответствия, клики в графах
— нахождение и описание черт лица

CvCam — захват видео
— позволяет осуществлять захват видео с цифровых видео-камер ( поддержка прекращена и в последних версиях этот модуль отсутствует )

Структура OpenCV

Установка OpenCV под Linux

После скачивания последней версии OpenCV с сайта разработчика http://sourceforge.net/projects/opencvlibrary/ нужно распаковать архив и выполнить сборку через CMake версии 2.6 или выше.

Установка CMake выполняется стандартно:

sudo apt-get install cmake

Для отображения окон OpenCV потребуется установить библиотеки GTK+ 2.x и libgtk2.0-dev

apt-get install libgtk2.0-dev
tar -xjf OpenCV-2.2.0.tar.bz2 cd OpenCV-2.2.0 cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ./ make make install

Для тестирования установленной библиотеки можно собрать примеры и что-нибудь запустить:

cd samples/c/ chmod +x build_all.sh ./build_all.sh ./delaunay

Если вместо тестовой картинки вы увидите ошибку «error while loading shared libraries: libopencv_core.so.2.2: cannot open shared object file: No such file or directory», то это значит, что программа не может найти библиотеки. Нужно явно указать путь до них:

$ export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

Если после этого опять ошибка:
OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script) in cvNamedWindow, file /usr/src/OpenCV-2.2.0/modules/highgui/src/window.cpp, line 274 terminate called after throwing an instance of ‘cv::Exception’ what(): /usr/src/OpenCV-2.2.0/modules/highgui/src/window.cpp:274: error: (-2) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function cvNamedWindow
Значит вы забыли установить GTK+ 2.x: libgtk2.0-dev. Запустите установку (см. выше).

Когда установка завершена заголовочные файлы будут доступны в дирректории /usr/local/include/opencv , а библиотечные файлы лежат в /usr/local/lib

Соберем программу с OpenCV:

// // for testing // // robocraft.ru // #include #include #include #include int main(int argc, char* argv[]) < IplImage* image=0, *dst=0; // имя картинки char filename[] = «Image0.jpg»; // получаем картинку image = cvLoadImage(filename, 1); printf(«[i] image: %sn», filename); assert( image != 0 ); // покажем изображение cvNamedWindow( «image»); cvShowImage( «image», image ); // ждём нажатия клавиши cvWaitKey(0); // освобождаем ресурсы cvReleaseImage( cvReleaseImage( // удаляем окна cvDestroyAllWindows(); return 0; >
CC := g++ CFLAGS := -I/usr/local/include/opencv -L/usr/local/lib OBJECTS := LIBRARIES := -lopencv_core -lopencv_imgproc -lopencv_highgui .PHONY: all clean all: test test: $(CC) $(CFLAGS) -o test test.cpp $(LIBRARIES) clean: rm -f *.o

Читайте также:
Savefrom net helper что это за программа

Запуск сборки коммандой make.

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

Hello World!

OpenCV установлен и готов к работе. Напишем свое первое приложение Hello World!

#include #include int main( int argc, char** argv ) < // задаём высоту и ширину картинки int height = 620; int width = 440; // задаём точку для вывода текста CvPoint pt = cvPoint( height/4, width/2 ); // Создаёи 8-битную, 3-канальную картинку IplImage* hw = cvCreateImage(cvSize(height, width), 8, 3); // заливаем картинку чёрным цветом cvSet(hw,cvScalar(0,0,0)); // инициализация шрифта CvFont font; cvInitFont( // используя шрифт выводим на картинку текст cvPutText(hw, «OpenCV Step By Step», pt, // создаём окошко cvNamedWindow(«Hello World», 0); // показываем картинку в созданном окне cvShowImage(«Hello World», hw); // ждём нажатия клавиши cvWaitKey(0); // освобождаем ресурсы cvReleaseImage( cvDestroyWindow(«Hello World»); return 0; >

OpenCV Hello World!

Загрузка изображения

Данный пример будет основой всех ваших программ на OpenCV. Мы загрузим в среду изображение из файла Image0.jpg

#include #include #include #include IplImage* image = 0; IplImage* src = 0; int main(int argc, char* argv[]) < // имя картинки задаётся первым параметром char* filename = argc == 2 ? argv[1] : «Image0.jpg»; // получаем картинку image = cvLoadImage(filename,1); // клонируем картинку src = cvCloneImage(image); printf(«[i] image: %sn», filename); assert( src != 0 ); // окно для отображения картинки cvNamedWindow(«original»,CV_WINDOW_AUTOSIZE); // показываем картинку cvShowImage(«original»,image); // выводим в консоль информацию о картинке printf( «[i] channels: %dn», image->nChannels ); printf( «[i] pixel depth: %d bitsn», image->depth ); printf( «[i] width: %d pixelsn», image->width ); printf( «[i] height: %d pixelsn», image->height ); printf( «[i] image size: %d bytesn», image->imageSize ); printf( «[i] width step: %d bytesn», image->widthStep ); // ждём нажатия клавиши cvWaitKey(0); // освобождаем ресурсы cvReleaseImage( cvReleaseImage( // удаляем окно cvDestroyWindow(«original»); return 0; >

Загруженное изображение в OpenCV

Поддерживаемые типы форматов изображений:

  • Windows bitmaps — BMP, DIB
  • JPEG files — JPEG, JPG, JPE
  • Portable Network Graphics — PNG
  • Portable image format — PBM, PGM, PPM
  • Sun rasters — SR, RAS
  • TIFF files — TIFF, TIF

Для обращения к изображению можно делать такие вызовы:

image->nChannels // число каналов картинки (RGB, хотя в OpenCV — BGR ) (1-4) image->depth // глубина в битах image->width // ширина картинки в пикселях image->height // высота картинки в пикселях image->imageSize // память занимаемая картинкой (==image->height*image->widthStep) image->widthStep // расстояние между соседними по вертикали точками изображения (число байт в одной строчке картинки — может потребоваться для самостоятельного обхода всех пикселей изображения)

Загрузка видео

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

#include #include #include #include IplImage* frame =0; int main(int argc, char* argv[]) < // имя файла задаётся первым параметром char* filename = argc == 2 ? argv[1] : «test.avi»; printf(«[i] file: %sn», filename); // окно для отображения картинки cvNamedWindow(«original»,CV_WINDOW_AUTOSIZE); // получаем информацию о видео-файле CvCapture* capture = cvCreateFileCapture( filename ); while(1)< // получаем следующий кадр frame = cvQueryFrame( capture ); if( !frame ) < break; >// здесь можно вставить // процедуру обработки // показываем кадр cvShowImage( «original», frame ); char c = cvWaitKey(33); if (c == 27) < // если нажата ESC — выходим break; >> // освобождаем ресурсы cvReleaseCapture( // удаляем окно cvDestroyWindow(«original»); return 0; >

Для захвата видео с камеры нужно немного модифицировать код — вместо функции cvCreateFileCapture() будет использоваться cvCreateCameraCapture(). При нажатии ESC воспроизведение прервется и окно закроется, а при нажатии Enter текущий кадр сохранится в jpg файл.

#include #include #include #include int main(int argc, char* argv[]) < // получаем любую подключённую камеру CvCapture* capture = cvCreateCameraCapture(CV_CAP_ANY); //cvCaptureFromCAM( 0 ); assert( capture ); //cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, 640);//1280); //cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT, 480);//960); // узнаем ширину и высоту кадра double width = cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH); double height = cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT); printf(«[i] %.0f x %.0fn», width, height ); IplImage* frame=0; cvNamedWindow(«capture», CV_WINDOW_AUTOSIZE); printf(«[i] press Enter for capture image and Esc for quit!nn»); int counter=0; char filename[512]; while(true)< // получаем кадр frame = cvQueryFrame( capture ); // показываем cvShowImage(«capture», frame); char c = cvWaitKey(33); if (c == 27) < // нажата ESC break; >else if(c == 13) < // Enter // сохраняем кадр в файл sprintf(filename, «Image%d.jpg», counter); printf(«[i] capture. %sn», filename); cvSaveImage(filename, frame); counter++; >> // освобождаем ресурсы cvReleaseCapture( cvDestroyWindow(«capture»); return 0; >

OpenCV v1.0 показывает и сохраняет картинку минимального разрешения камеры 320×240.

Видео с камеры OpenCV

Распознавание объектов по шаблону

Для распознавание областей на исходном изображении по шаблону существует функция cvMatchTemplate(). Функция накладывает шаблон изображения на текущее изображение и согласно выбранному алгоритму выполняет поиск корреляции между ними. Определение границ найденного шаблона на исходном изображении выполняется функцией cvMinMaxLoc, а для нормализации алгоритма поиска cvNormalize().

// // пример cvMatchTemplate() // сравнение изображение с шаблоном // #include #include #include #include IplImage* image = 0; IplImage* templ = 0; int main(int argc, char* argv[]) < // имя картинки задаётся первым параметром char* filename = argc >= 2 ? argv[1] : «Image0.jpg»; // получаем картинку image = cvLoadImage(filename,1); printf(«[i] image: %sn», filename); assert( image != 0 ); // шаблон char* filename2 = argc >= 3 ? argv[2] : «eye.jpg»; printf(«[i] template: %sn», filename2); templ = cvLoadImage(filename2,1); assert( templ != 0 ); cvNamedWindow(«origianl», CV_WINDOW_AUTOSIZE); cvNamedWindow(«template», CV_WINDOW_AUTOSIZE); cvNamedWindow(«Match», CV_WINDOW_AUTOSIZE); cvNamedWindow(«res», CV_WINDOW_AUTOSIZE); // размер шаблона int width = templ->width; int height = templ->height; // оригинал и шаблон cvShowImage( «origianl», image); cvShowImage( «template», templ); // изображение для хранения результата сравнения // размер результата: если image WxH и templ wxh, то result = (W-w+1)x(H-h+1) IplImage *res = cvCreateImage( cvSize( (image->width-templ->width+1), (image->height-templ->height+1)), IPL_DEPTH_32F, 1 ); // сравнение изображения с шаблоном cvMatchTemplate(image, templ, res, CV_TM_SQDIFF); // покажем что получили cvShowImage( «res», res); // определение лучшее положение для сравнения // (поиск минимумов и максимумов на изображении) double minval, maxval; CvPoint minloc, maxloc; cvMinMaxLoc(res, maxval, maxloc, 0); // нормализуем cvNormalize(res,res,1,0,CV_MINMAX); cvNamedWindow(«res norm», CV_WINDOW_AUTOSIZE); cvShowImage( «res norm», res); // выделим область прямоугольником cvRectangle(image, cvPoint(minloc.x, minloc.y), cvPoint(minloc.x+templ->width-1, minloc.y+templ->height-1), CV_RGB(255, 0, 0), 1, 8); // показываем изображение cvShowImage(«Match», image); // ждём нажатия клавиши cvWaitKey(0); // освобождаем ресурсы cvReleaseImage( cvReleaseImage( cvReleaseImage( cvDestroyAllWindows(); return 0; >

Источник: diytimes.ru

Уроки OpenCV

Изучение Python OpenCV / Урок #1 – Нейронные сети и машинное обучение

Изучение Python OpenCV / Урок #1 – Нейронные сети и машинное обучение

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

Читайте также:
Что за программа my clean pc

Видеоурок

Полезные ссылки:

  • Курс по языку Python ;
  • Официальный сайт Python ;
  • Программа PyCharm ;
  • Программа Visual Studio Code .

С чем мы будем работать?

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

Поскольку мы с вами в ходе курса будем работать с изображениями и видео, а также с отслеживанием объектов на всём этом, то нам наиболее подойдет библиотека OpenCV.

Что такое OpenCV?

Библиотека OpenCV расшифровывается как Open Source Computer Vision Library (библиотека с открытым исходным кодом для компьютерного зрения). Название говорит само за себя. Данная библиотека позволяет работать с изображениями и видео, распознавать на них объекты, информацию, текст и прочие моменты.

OpenCV реализована на основе языка C++ и была портирована для разработки на Python , Java , Ruby и некоторых других языков. Сама библиотека была разработана еще в 2006 году. С тех пор она перетерпела множество обновлений и на сегодня является лидером в сфере обработки фото и видео.

На что способна библиотека?

Представим вам нужно создать программу для паркинга в каком-либо торговом центре. Вам нужно отслеживать видео с камеры, обрабатывать его, находить номерные знаки и считывать с них информацию. Звучит сложно? Да, немного. Но при этом реализовать все это не будет столь большой проблемой, если использовать OpenCV.

В целом библиотека способна на любые действия, что как-либо связаны с фото или видео. Создать отслеживание и распознавание лиц, разработать проект для считывания текста, создать программу, что, наконец, поймет где кошка, а где собачка – все это и многое другое можно делать за счёт этой библиотеки.

В ходе курса мы изучим основной синтаксис библиотеки и разработаем проекты для распознавания лиц и считывания номерных знаков.

Почему именно язык Python?

На самом деле вы могли бы спокойно выбрать другой язык программирования. Тот же Джава вполне мог бы подойти. Мы выбрали Питон по причине его легкого синтаксиса и большого набора встроенных модулей. Дело в том, что нам не нужен сложный синтаксис, дабы мы не запутались. Сперва проще все изучить с использованием чего-то простого и удобного, а уже позже, по необходимости, вы сможете использовать OpenCV и для других языков программирования.

Все функции и вся суть библиотеки от этого никак не поменяется.

Другие библиотеки

OpenCV лидер в своем деле, но помимо него есть ещё сотни других. Про некоторые из них давайте поговорим.

За курс мы с вами будем работать с библиотекой « numpy ». В курсе нам потребуется обрабатывать огромные массивы данных. К примеру, чтобы понять что находится на фото его нужно будет привести в нужный формат и далее перебрать каждый пиксель. Для работы со столь большим набором данных можно использовать «numpy». Речь про эту библиотеку заходит практически каждый раз при разработке проектов с искусственным интеллектом. Библиотека содержит набор встроенных функций для быстрой обработки многомерных массивов данных.

В будущем вы можете столкнутся с такой библиотекой как « matplotlib ». Сама по себе она не работает с нейронными сетями, но зато прекрасно справляется с обработкой больших наборов данных и их визуализацией. Если в будущем вам понадобится вывести их пользователю, то это можно будет быстро сделать за счет этой библиотеки. Она обладает набором функций для визуализации данных и создания различных графиков, диаграмм и прочих интерактивных схем.

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

План курса

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

Перед курсом мы настоятельно рекомендуем изучить язык Питон. Без понимания данного языка вам будет сложно пройти данный курс и изучить OpenCV. Большая программа обучения по данному языку программирования есть на нашем сайте. Вы можете ознакомиться с этой программой здесь .

Большое задание по курсу

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

Источник: itproger.com

Установка OpenCV 3 в Windows

Большинство мануалов в интернетах предлагают собрать opencv самостоятельно. Это процесс не быстрый да и требует некоторых умений.
Гораздо проще воспользоваться готовой сборкой библиотеки.
Обратите внимание, что так Вы не сможете использовать статическую библиотеку. В поставке для Windows таковые отсутствуют. Их можно только собрать самостоятельно.
Но какая нам разница. Мы будем пользоваться собранной DLL, которую не нужно собирать.

Как установить OpenCV в Windows

Сперва качаем «opencv for windows» с сайта opencv.org.
Запускаем архив (он в формате exe. самораспаковывающийся). Распаковываем в диск C.

Распаковка Opencv

Теперь идем в Мой компьютер — Свойства — Дополнительные параметры системы — Переменные среды
Создаем переменную OPENCV_DIR:

C:opencvbuildx64vc14

Переменная среды Opencv

Теперь добавляем opencv в системный путь. Редактируем переменную PATH:

%OPENCV_DIR%bin

Path Opencv

Как создать проект Visual Studio с OpenCV

Создаем новый проект — Win32 Console Application.

Проект Visual Studio для Opencv

Жмем Finish, можно конечно понастраивать, но мы этого делать не будем.

Проект Visual Studio для Opencv

Идем в настройки проекта — Project — Properties.
Переключаем в верхней части окна Platforms в положение All Platforms.
Выбираем в левом столбце C/C++ — General.
Добавляем путь к заголовкам opencv — Additional Include Directories.

$(OPENCV_DIR)….include

Настройки проекта Visual Studio для Opencv

Переходим в настройки компановщика — Linker — General.
Здесь указываем путь к файлам lib opencv.

$(OPENCV_DIR)lib

Настройки компановщика Visual Studio для Opencv

Добавляем DLL opencv как зависимость.
Переходим в Linker — Input и добавляем в поле Additional Dependencies:

opencv_world310.dll

или debug версию

opencv_world310d.dll

Настройки проекта Visual Studio для Opencv

Теперь в каталог с исходными файлами кладем любимую картинку.
Для теста используем такую программу.

// OpencvApplication.cpp : Defines the entry point for the console application. // #include #include #include using namespace cv; using namespace std; int main(int argc, char** argv) < if (argc != 2) < cout Mat image; image = imread(argv[1], IMREAD_COLOR); // Read the file if (!image.data) // Check for invalid input < cout namedWindow(«Display window», WINDOW_AUTOSIZE); // Create a window for display. imshow(«Display window», image); // Show our image inside it. waitKey(0); // Wait for a keystroke in the window return 0; >

Эта программа в качестве параметра использует параметр командной строки — имя файла изображения.
Укажем его. Переходим в Project Properties — Debugging.
Указываем имя файла в строке Command Arguments.

Параметр командной строки

Приложение OpenCV в Visual Studio

Радуемся. Мы собрали наше первое 64 битное Windows приложение OpenCV в Visual Studio.

Источник: blablacode.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru