一,簡介:
opencv最基礎的庫。包含exception,point,rect,size,slice,vector,matrix,image等數據結構,和相應的操作函數,以及一些基礎算法。
二,分析:
opencv_core模塊src文件包括如下圖所示:
下面按照依賴關系來分析各個頭文件的作用(后面的頭文件依賴於前面的頭文件):
Header Files/cvconfig.h ,用於編譯選項開關,可配置第三方庫的支持;
Header Files/opencv_modules.hpp, 用於編譯選項開關,配置opencv內部模塊的裁剪;
version.hpp, 定義了opencv的版本號;
cvdef.h,用於設置編譯平台(gcc,msvc等)相關的選項和SIMD指令的支持,定義了OpenCV基礎數據類型(CV_8UC1等),以及平台相關原子操作函數;
types_c.h,為C/C++頭文件,定義了C操作的OpenCV基礎數據結構,包括:Cv32suf,Cv64suf,CVStatus,CvRNG,IplImage,IplTileInfo,IplROI,IplConvKernel,IplConvKernelFP,CvMat,CvMatND,CvSet,CvSparesMat,CvSparseMatIterator,cvHistType,CvHistogram,CvRect,CvTermCriteria,CvPoint,CvPoint2D32f,CvPoint3D32f,CvPoint2D64f,CvPoint3D64f,CvSize,CvSize2D32f,CvBox2D,CvLineIterator,CvSlice,CvScalar,CvMemBlock,CvMemStorage,CvMemStoragePos,CvSeqBlock,CvSeq,CvSetElem,CvSet,CvGraphEdge,CvGraphVtx,CvGraphVtx2D,CvGraph,CvChain,CvContour,CvPoint2DSeq,CvSeqWriter,CvSeqReader,CvAttrList,CvTypeInfo,CvString,CvStringHashNode,CvFileNode,CvTypeInfo,CvPluginFuncInfo,CvModuleInfo,以及一些相關操作函數;
types.hpp,為C++ only頭文件,定義了C++操作的OpenCV基礎數據結構,包括:Complex,Point,Point3,Size,Rect,RotatedRect,Range,Scalar,KeyPoint,DMatch,TermCriteria,Moments,以及一些相關操作函數;
cvstd.inl.hpp,cvstd.hpp,如果沒有定義OPENCV_NOSTL宏(即使用c++ std庫),則定義了FileNode,Allocator,Ptr,String以及與std數據類型兼容的一些操作,並且定義了相關數據類型的輸入輸出函數;
base.hpp,定義了error code等;
Cuda Headers/*.*,gpu*,opengl.hpp,這些是並行加速的相關數據結構函數,目前不做分析,且后記博客也將跳過這些文件;
三,總結:
未完待更新!