OpenCV

OpenCV
OpenCV
OpenCV Logo with text.png
Тип

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

Автор

Intel Corporation, Willow Garage Inc., Itseez Ltd.

Разработчик

Itseez

Написана на

С++, Java, Python

Операционная система

Linux, Mac OS X, Android и др. UNIX-подобные, Windows

Первый выпуск

2006

Последняя версия

2.4.3 (2 ноября 2012[1])

Состояние

активное

Лицензия

BSD

Сайт

opencv.org

OpenCV (англ. Open Source Computer Vision Library, библиотека компьютерного зрения с открытым исходным кодом) — библиотека алгоритмов компьютерного зрения, обработки изображений и численных алгоритмов общего назначения с открытым кодом. Реализована на C/C++, также разрабатывается для Python, Java, Ruby, Matlab, Lua и других языков[2]. Может свободно использоваться в академических и коммерческих целях — распространяется в условиях лицензии BSD.

Содержание

Применение

  • Для утверждения общего стандартного интерфейса компьютерного зрения для приложений в этой области. Для способствования росту числа таких приложений и создания новых моделей использования PC.
  • Сделать платформы Intel привлекательными для разработчиков таких приложений за счёт дополнительного ускорения OpenCV с помощью Intel® Performance Libraries (Сейчас включают IPP (низкоуровневые библиотеки для обработки сигналов, изображений, а также медиа-кодеки) и MKL (специальная версия LAPACK и FFTPack)). OpenCV способна автоматически обнаруживать присутствие IPP и MKL и использовать их для ускорения обработки.
  • (Замечание — для работы OpenCV c IPP версии 5.3 необходимо скачать с сайта Intel и подменить файл cxswitcher.cpp — иначе IPP не будет обнаруживаться)

Поддерживаемые платформы и инструменты

Сами библиотеки:

  • Microsoft Windows: компиляторы Microsoft Visual C++ (6.0, .NET 2003), Intel Compiler, Borland C++, Mingw (GCC 3.x).
  • Linux: GCC (2.9x, 3.x), Intel Compiler: «./configure-make-make install», RPM (spec файл включен в поставку)
  • Mac OS X: GCC (3.x, 4.x)
  • Android
  • iOS — неофициально
  • Используются C и «облегченный» C++. Прагмы и условная компиляция используются очень ограниченно.

Средства GUI, захват видео:

Документация: статический HTML, PDF.

Основные модули

В версии 2.2 библиотека была реорганизована. Вместо универсальных модулей cxcore, cvaux, highGUI и других было создано несколько компактных модулей с более узкой специализацией:

  • opencv_core — основная функциональность. Включает в себя базовые структуры, вычисления(математические функции, генераторы случайных чисел) и линейную алгебру, DFT, DCT, ввод/вывод для XML и YAWL и т. д.
  • opencv_imgproc — обработка изображений (фильтрация, геометрические преобразования, преобразование цветовых пространств и т. д.).
  • opencv_highgui — простой UI, ввод/вывод изображений и видео.
  • opencv_ml — модели машинного обучения (SVM, деревья решений, обучение со стимулированием и т. д.).
  • opencv_features2d — распознавание и описание плоских примитивов (SURF (англ.)русск., FAST и другие, включая специализированный фреймворк).
  • opencv_video — анализ движения и отслеживание объектов (оптический поток, шаблоны движения, устранение фона).
  • opencv_objdetect — обнаружение объектов на изображении (нахождение лиц с помощью алгоритма Виолы-Джонса (англ.), распознавание людей HOG и т. д.).
  • opencv_calib3d — калибровка камеры, поиск стерео-соответствия и элементы обработки трехмерных данных.
  • opencv_flann — библиотека быстрого поиска ближайших соседей (FLANN 1.5) и обертки OpenCV.
  • opencv_contrib — сопутствующий код, ещё не готовый для применения.
  • opencv_legacy — устаревший код, сохраненный ради обратной совместимости.
  • opencv_gpu — ускорение некоторых функций OpenCV за счет CUDA, создан при поддержке NVidia.

Пример проверки работы OpenCV с IPP

#include "stdio.h"
 
#include "cv.h"
#include "highgui.h"
 
char name0[] = "image1.jpeg";
char name1[] = "image2.jpeg";
 
int main()
{
  IplImage* img1 = NULL;
  IplImage* img2 = NULL;
 
  //cvNamedWindow("Image", 1);
  //load original image
  img1 = cvLoadImage(name0,1);
  img2 = cvLoadImage(name1,1);
 
  //cvUseOptimized(1); // load IPP
  //How to check whether IPP is used or not?
  const char* plugin_info = 0;
 
  double sm1, sm2, sm3;
  int Count = 100;
  printf("== Test for resizing images in OpenCV with IPP ==\n");
 
  for (int j=0; j<2; j++) {
    if (j == 1)
      cvUseOptimized(0); // unload IPP
 
    cvGetModuleInfo(0,0,&plugin_info);
    bool ipp_is_used = plugin_info != 0 && strstr(plugin_info,"ipp")!=0;
 
    sm1=cvGetTickCount()/cvGetTickFrequency();
 
    for (int i=0; i<Count; i++) {
      IplImage* newImage1 = NULL;
      IplImage* newImage2 = NULL;
      // resize the image
      newImage1 = cvCreateImage(cvSize((img1->width*2.55) ,(img1->height*3.77)), img1->depth, img1->nChannels);
      newImage2 = cvCreateImage(cvSize((img2->width*2.55) ,(img2->height*3.77)), img2->depth, img2->nChannels);
 
      cvResize(img1, newImage1);
      cvResize(img2, newImage2);
      //
      cvReleaseImage(&newImage1);
      cvReleaseImage(&newImage2);
    }
    sm2=cvGetTickCount()/cvGetTickFrequency();
    sm3 = sm2 - sm1;
 
    if (ipp_is_used)
      printf("* IPP is used\n");
    else
      printf("* IPP is not used! \n");
 
    printf("* Iteration resize = %d \n", Count);
 
         printf("m=%f\n", sm3);
    int m, s, ms;
    m = sm3 / 60000000;
    s = (sm3 - m*60000000) /1000000;
    ms = (sm3 - (m*60000000)-(s*1000000));
    printf("* Time - %d min %d sec %d msec \n",(int)(m), (int)s, (int)ms);
    printf("=================================================\n");
  }
 
  cvReleaseImage(&img1);
  cvReleaseImage(&img2);
  //cvShowImage("Image", newImage1);
  //cvDestroyWindow( "Image" );
  return 0;
}

Примечания

  1. OpenCV v2.4.3 released
  2. Bradsky G., Kaehler A. Learning OpenCV — O’Reilly, 2008. — C. 1 — ISBN 978-0-596-51613-0

Литература

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Полезное


Смотреть что такое "OpenCV" в других словарях:

  • OpenCV — Original author(s) Intel Corporation Stable release 2.3.1 / August 17, 2011; 3 months ago ( …   Wikipedia

  • OpenCV — Entwickler Intel, Willow Garage Aktuelle Version 2.3.1 (August 2011) …   Deutsch Wikipedia

  • Opencv — ist eine quelloffene Programmbibliothek von Intel. Sie ist für die Programmiersprachen C und C++ geschrieben und enthält Algorithmen für die Bildverarbeitung und maschinelles Sehen. Im September 2006 wurde die Version 1.0 herausgegeben. Die… …   Deutsch Wikipedia

  • OpenCV — Dernière version 2.3.1 (17 aout& …   Wikipédia en Français

  • OpenCV — Plantilla:Wikify OpenCV Desarrollador Intel Corporation http://opencv.willowga …   Wikipedia Español

  • k-Means-Algorithmus — Ein k Means Algorithmus ist ein Verfahren zur Clusteranalyse. Dabei wird aus einer Menge von ähnlichen Objekten eine vorher bekannte Anzahl von k Gruppen gebildet. Der Algorithmus ist eine der am häufigsten verwendeten Techniken zur Gruppierung… …   Deutsch Wikipedia

  • Motion Tracking using Java — Motion tracking is the process of locating a moving object (or several ones) in time. An algorithm analyses the video frames and outputs the location of moving targets within the video frame. Libraries to Implement Motion tracking OpenCV It’s a… …   Wikipedia

  • Integrating Vision Toolkit — Entwickler Pedram Azad et al., Karlsruher Institut für Technologie (KIT) Aktuelle Version 1.3.14 (16. August 2011) Betriebssystem plattformunabhängig Programmier­sprache …   Deutsch Wikipedia

  • Méthode de Viola et Jones — Un exemple de détection de visage par la méthode de Viola et Jones. La méthode de Viola et Jones est une méthode de détection d objet dans une image numérique, proposée par les chercheurs Paul Viola et …   Wikipédia en Français

  • Support-Vector-Machine — Eine Support Vector Machine [səˈpɔːt ˈvektə məˈʃiːn] (SVM, die Übersetzung aus dem Englischen, „Stützvektormaschine“ oder Stützvektormethode, ist nicht gebräuchlich) ist ein Klassifikator (vgl. Klassifizierung). Eine Support Vector Machine… …   Deutsch Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»