OpenCV – библиотека алгоритмов обработки изображений, компьютерного зрения, а так же численных алгоритмов общего назначения. Исходный код библиотеки доступен (за исключением отдельных небольших модулей) и распространяется под открытой лицензией BSD.
C:\OpenCV
. После распаковки по указанному пути будут 2 папки:
build
– заголовочные файлы, скомпилированные библиотеки и т.п. Эта папка потребуется в первую очередь.sources
– полные исходные коды библиотеки. Могут потребоваться для самостоятельной компиляции библиотеки.OPENCV_DIR
:
cmd.exe
с правами администратораsetx -m OPENCV_DIR "<Папка_куда_распаковали_OpenCV>\build"
$(OPENCV_DIR)\include;$(OPENCV_DIR)\include\opencv
Multi-threaded Debug (/MTd)
– в конфигурации Debug и Multi-threaded (/MT)
– в конфигурации Release. $(OPENCV_DIR)\x86\vc12\staticlib
– Visual Studio 2013, для x86 платформы,$(OPENCV_DIR)\x86\vc11\staticlib
– Visual Studio 2012, для x86 платформы,$(OPENCV_DIR)\x86\vc12\staticlib
– Visual Studio 2010, для x86 платформы,$(OPENCV_DIR)\x64\vc12\staticlib
– Visual Studio 2013, для x64 платформы,$(OPENCV_DIR)\x64\vc11\staticlib
– Visual Studio 2012, для x64 платформы,$(OPENCV_DIR)\x64\vc12\staticlib
– Visual Studio 2010, для x64 платформы.<имя_модуля>d.lib
для Debug конфигурации, и <имя_модуля>.lib
– для Release. Список требующихся модулей:
zlib
libjpeg
libtiff
libpng
libjasper
IlmImf
opencv_core2411
opencv_highgui2411
opencv_imgproc2411
opencv_video2411
opencv_ml2411
opencv_calib3d2411
opencv_objdetect2411
opencv_features2d2411
opencv_contrib2411
opencv_ts2411
opencv_legacy2411
opencv_flann2411
opencv_gpu2411
opencv_nonfree2411
opencv_ocl2411
opencv_photo2411
opencv_stitching2411
opencv_superres2411
opencv_videostab2411
vfw32.lib
(не различается для Debug и Release конфигураций).opencv2/opencv.hpp
.Последние 3 пункта можно выполнить другим способом – создать и добавить в ваш проект следующий заголовочный файл:
// OpenCV.h
#pragma once
#include <opencv2/opencv.hpp>
#ifdef _MSC_VER // Visual Studio compiler
# if CV_MAJOR_VERSION == 2 && CV_MINOR_VERSION == 4 && CV_SUBMINOR_VERSION == 11
// OpenCV version 2.4.11
# if defined(_DEBUG) // debug versions: '***d.lib'
# pragma comment(lib, "zlibd.lib")
# pragma comment(lib, "libjpegd.lib")
# pragma comment(lib, "libtiffd.lib")
# pragma comment(lib, "libpngd.lib")
# pragma comment(lib, "libjasperd.lib")
# pragma comment(lib, "IlmImfd.lib")
# pragma comment(lib, "opencv_core2411d.lib")
# pragma comment(lib, "opencv_highgui2411d.lib")
# pragma comment(lib, "opencv_imgproc2411d.lib")
# pragma comment(lib, "opencv_video2411d.lib")
# pragma comment(lib, "opencv_ml2411d.lib")
# pragma comment(lib, "opencv_calib3d2411d.lib")
# pragma comment(lib, "opencv_objdetect2411d.lib")
# pragma comment(lib, "opencv_features2d2411d.lib")
# pragma comment(lib, "opencv_contrib2411d.lib")
# pragma comment(lib, "opencv_ts2411d.lib")
# pragma comment(lib, "opencv_legacy2411d.lib")
# pragma comment(lib, "opencv_flann2411d.lib")
# pragma comment(lib, "opencv_gpu2411d.lib")
# pragma comment(lib, "opencv_nonfree2411d.lib")
# pragma comment(lib, "opencv_ocl2411d.lib")
# pragma comment(lib, "opencv_photo2411d.lib")
# pragma comment(lib, "opencv_stitching2411d.lib")
# pragma comment(lib, "opencv_superres2411d.lib")
# pragma comment(lib, "opencv_videostab2411d.lib")
# else // release versions: '***.lib'
# pragma comment(lib, "zlib.lib")
# pragma comment(lib, "libjpeg.lib")
# pragma comment(lib, "libtiff.lib")
# pragma comment(lib, "libpng.lib")
# pragma comment(lib, "libjasper.lib")
# pragma comment(lib, "IlmImf.lib")
# pragma comment(lib, "opencv_core2411.lib")
# pragma comment(lib, "opencv_highgui2411.lib")
# pragma comment(lib, "opencv_imgproc2411.lib")
# pragma comment(lib, "opencv_video2411.lib")
# pragma comment(lib, "opencv_ml2411.lib")
# pragma comment(lib, "opencv_calib3d2411.lib")
# pragma comment(lib, "opencv_objdetect2411.lib")
# pragma comment(lib, "opencv_features2d2411.lib")
# pragma comment(lib, "opencv_contrib2411.lib")
# pragma comment(lib, "opencv_ts2411.lib")
# pragma comment(lib, "opencv_legacy2411.lib")
# pragma comment(lib, "opencv_flann2411.lib")
# pragma comment(lib, "opencv_gpu2411.lib")
# pragma comment(lib, "opencv_nonfree2411.lib")
# pragma comment(lib, "opencv_ocl2411.lib")
# pragma comment(lib, "opencv_photo2411.lib")
# pragma comment(lib, "opencv_stitching2411.lib")
# pragma comment(lib, "opencv_superres2411.lib")
# pragma comment(lib, "opencv_videostab2411.lib")
# endif // defined(_DEBUG)
# endif // CV_MAJOR_VERSION == 2 && CV_MINOR_VERSION == 4 && CV_SUBMINOR_VERSION == 11
#pragma comment(lib, "Vfw32.lib") // 'Video for Windows', used by OpenCV for video capture
#endif // _MSC_VER
Проект готов, можно начинать пользоваться:
#include "OpenCV.h"
void main(void) {
cv::Mat image = cv::imread("sample.jpg");
cv::imshow("image", image);
cv::waitKey(0);
}
Если вы используете Visual Studio 2008 или более раннюю, то подходящих готовых *.lib файлов в поставке нет. Придётся их собрать из исходных кодов самостоятельно.
bin\cmake-gui.exe
.<Папка_куда_распаковали_OpenCV>\source
C:\Temp\build_x86
.sources
.C:\Temp\build_x86
находится проект для Visual Studio: OpenCV.sln
. Загружаем его, и запускаем компиляцию командой Build → Build solution, сначала для Debug, а затем и для Release конфигурации. Построение всех библиотек может занять довольно значительное время.<Папка_куда_распаковали_OpenCV>\build\x86\vc9\staticlib
. В нашем примере искать файлы нужно в папках
C:\Temp\build_x86\3rdparty\lib\Debug
C:\Temp\build_x86\3rdparty\lib\Release
C:\Temp\build_x86\lib\Debug
C:\Temp\build_x86\lib\Release