16-10-2023
Тип | |
---|---|
Автор |
Intel Corporation, Willow Garage Inc., Itseez Ltd. |
Разработчик |
Itseez |
Написана на | |
Операционная система |
Linux, Mac OS X, Android и др. UNIX-подобные, Windows |
Первый выпуск |
2006 |
Последняя версия | |
Состояние |
активное |
Лицензия | |
Сайт |
opencv.org |
OpenCV (англ. Open Source Computer Vision Library, библиотека компьютерного зрения с открытым исходным кодом) — библиотека алгоритмов компьютерного зрения, обработки изображений и численных алгоритмов общего назначения с открытым кодом. Реализована на C/C++, также разрабатывается для Python, Java, Ruby, Matlab, Lua и других языков[2]. Может свободно использоваться в академических и коммерческих целях — распространяется в условиях лицензии BSD.
Содержание |
Сами библиотеки:
Средства GUI, захват видео:
Документация: статический HTML, PDF.
В версии 2.2 библиотека была реорганизована. Вместо универсальных модулей cxcore, cvaux, highGUI и других было создано несколько компактных модулей с более узкой специализацией:
#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; }
OpenCV.