OpenCV 4.5.3(日本語機械翻訳)
モジュール | クラス | マクロ定義 | 型定義 | 列挙型 | 関数 | 変数
C structures and operations

モジュール

Connections with C++

クラス

struct CvNArrayIterator
struct CvGraphScanner
struct CvTreeNodeIterator
struct _IplImage
struct _IplROI
struct _IplConvKernel
struct _IplConvKernelFP
struct CvMat
struct CvMatND
struct CvSparseMat
struct CvSparseNode
struct CvSparseMatIterator
struct CvHistogram
struct CvRect
struct CvTermCriteria
struct CvPoint
struct CvPoint2D32f
struct CvPoint3D32f
struct CvPoint2D64f
struct CvPoint3D64f
struct CvSize
struct CvSize2D32f
struct CvBox2D
struct CvLineIterator
struct CvSlice
struct CvScalar
struct CvMemBlock
struct CvMemStorage
struct CvMemStoragePos
struct CvSeqBlock
struct CvSeq
struct CvSetElem
struct CvSet
struct CvGraphEdge
struct CvGraphVtx
struct CvGraphVtx2D
struct CvGraph
struct CvChain
struct CvContour
struct CvSeqWriter
struct CvSeqReader

マクロ定義

#define cvFree(ptr)   (cvFree_(*(ptr)), *(ptr)=0)
#define CV_AUTOSTEP   0x7fffffff
#define cvGetSubArr   cvGetSubRect
#define CV_MAX_ARR   10
#define CV_NO_DEPTH_CHECK   1
#define CV_NO_CN_CHECK   2
#define CV_NO_SIZE_CHECK   4
#define cvReshapeND(arr, header, new_cn, new_dims, new_sizes)
#define cvZero   cvSetZero
#define cvCvtScale   cvConvertScale
#define cvScale   cvConvertScale
#define cvConvert(src, dst)   cvConvertScale( (src), (dst), 1, 0 )
#define cvCvtScaleAbs   cvConvertScaleAbs
#define cvAXPY(A, real_scalar, B, C)   cvScaleAdd(A, cvRealScalar(real_scalar), B, C)
#define CV_CMP_EQ   0
#define CV_CMP_GT   1
#define CV_CMP_GE   2
#define CV_CMP_LT   3
#define CV_CMP_LE   4
#define CV_CMP_NE   5
#define cvAbs(src, dst)   cvAbsDiffS( (src), (dst), cvScalarAll(0))
#define CV_CHECK_RANGE   1
#define CV_CHECK_QUIET   2
#define cvCheckArray   cvCheckArr
#define CV_RAND_UNI   0
#define CV_RAND_NORMAL   1
#define CV_SORT_EVERY_ROW   0
#define CV_SORT_EVERY_COLUMN   1
#define CV_SORT_ASCENDING   0
#define CV_SORT_DESCENDING   16
#define cvMatMulAdd(src1, src2, src3, dst)   cvGEMM( (src1), (src2), 1., (src3), 1., (dst), 0 )
#define cvMatMul(src1, src2, dst)cvMatMulAdd( (src1), (src2), NULL, (dst))
#define CV_GEMM_A_T   1
#define CV_GEMM_B_T   2
#define CV_GEMM_C_T   4
#define cvMatMulAddEx   cvGEMM
#define cvMatMulAddS   cvTransform
#define cvT   cvTranspose
#define cvMirror   cvFlip
#define CV_SVD_MODIFY_A   1
#define CV_SVD_U_T   2
#define CV_SVD_V_T   4
#define CV_LU   0
#define CV_SVD   1
#define CV_SVD_SYM   2
#define CV_CHOLESKY   3
#define CV_QR   4
#define CV_NORMAL   16
#define cvInv   cvInvert
#define CV_PCA_DATA_AS_ROW   0
#define CV_PCA_DATA_AS_COL   1
#define CV_PCA_USE_AVG   2
#define cvMahalonobis   cvMahalanobis
#define cvFFT   cvDFT
#define CV_FRONT   1
#define CV_BACK   0
#define cvGraphFindEdge   cvFindGraphEdge
#define cvGraphFindEdgeByPtr   cvFindGraphEdgeByPtr
#define cvGetGraphVtx(graph, idx)   (CvGraphVtx*)cvGetSetElem((CvSet*)(graph), (idx))
#define cvGraphVtxIdx(graph, vtx)   ((vtx)->flags & CV_SET_ELEM_IDX_MASK)
#define cvGraphEdgeIdx(graph, edge)   ((edge)->flags & CV_SET_ELEM_IDX_MASK)
#define cvGraphGetVtxCount(graph)   ((graph)->active_count)
#define cvGraphGetEdgeCount(graph)   ((graph)->edges->active_count)
#define CV_GRAPH_VERTEX   1
#define CV_GRAPH_TREE_EDGE   2
#define CV_GRAPH_BACK_EDGE   4
#define CV_GRAPH_FORWARD_EDGE   8
#define CV_GRAPH_CROSS_EDGE   16
#define CV_GRAPH_ANY_EDGE   30
#define CV_GRAPH_NEW_TREE   32
#define CV_GRAPH_BACKTRACKING   64
#define CV_GRAPH_OVER   -1
#define CV_GRAPH_ALL_ITEMS   -1
#define CV_GRAPH_ITEM_VISITED_FLAG   (1 << 30)
#define CV_IS_GRAPH_VERTEX_VISITED(vtx)    (((CvGraphVtx*)(vtx))->flags & CV_GRAPH_ITEM_VISITED_FLAG)
#define CV_IS_GRAPH_EDGE_VISITED(edge)    (((CvGraphEdge*)(edge))->flags & CV_GRAPH_ITEM_VISITED_FLAG)
#define CV_GRAPH_SEARCH_TREE_NODE_FLAG   (1 << 29)
#define CV_GRAPH_FORWARD_EDGE_FLAG   (1 << 28)
#define CV_KMEANS_USE_INITIAL_LABELS   1
#define CV_TURN_ON_IPL_COMPATIBILITY()
#define CV_ErrModeLeaf   0 /* Print error and exit program */
#define CV_ErrModeParent   1 /* Print error and continue */
#define CV_ErrModeSilent   2 /* Don't print and continue */
#define OPENCV_ERROR(status, func, context)   cvError((status),(func),(context),__FILE__,__LINE__)
#define OPENCV_ASSERT(expr, func, context)
#define OPENCV_CALL(Func)
#define CV_FUNCNAME(Name)   static char cvFuncName[] = Name
#define CV_ERROR(Code, Msg)
#define CV_CHECK()
#define CV_CALL(Func)
#define CV_ASSERT(Condition)
#define __CV_BEGIN__   {
#define __CV_END__   goto exit; exit: ; }
#define __CV_EXIT__   goto exit
#define CV_SWAP(a, b, t)   ((t) = (a), (a) = (b), (b) = (t))
#define CV_IMIN(a, b)   ((a) ^ (((a)^(b)) & (((a) < (b)) - 1)))
#define CV_IMAX(a, b)   ((a) ^ (((a)^(b)) & (((a) > (b)) - 1)))
#define CV_IABS(a)   (((a) ^ ((a) < 0 ? -1 : 0)) - ((a) < 0 ? -1 : 0))
#define CV_CMP(a, b)   (((a) > (b)) - ((a) < (b)))
#define CV_SIGN(a)   CV_CMP((a),0)
#define cvInvSqrt(value)   ((float)(1./sqrt(value)))
#define cvSqrt(value)   ((float)sqrt(value))
#define CV_RNG_COEFF   4164903690U
#define IPL_DEPTH_SIGN   0x80000000
#define IPL_DEPTH_1U   1
#define IPL_DEPTH_8U   8
#define IPL_DEPTH_16U   16
#define IPL_DEPTH_32F   32
#define IPL_DEPTH_8S   (IPL_DEPTH_SIGN| 8)
#define IPL_DEPTH_16S   (IPL_DEPTH_SIGN|16)
#define IPL_DEPTH_32S   (IPL_DEPTH_SIGN|32)
#define IPL_DATA_ORDER_PIXEL   0
#define IPL_DATA_ORDER_PLANE   1
#define IPL_ORIGIN_TL   0
#define IPL_ORIGIN_BL   1
#define IPL_ALIGN_4BYTES   4
#define IPL_ALIGN_8BYTES   8
#define IPL_ALIGN_16BYTES   16
#define IPL_ALIGN_32BYTES   32
#define IPL_ALIGN_DWORD   IPL_ALIGN_4BYTES
#define IPL_ALIGN_QWORD   IPL_ALIGN_8BYTES
#define IPL_BORDER_CONSTANT   0
#define IPL_BORDER_REPLICATE   1
#define IPL_BORDER_REFLECT   2
#define IPL_BORDER_WRAP   3
#define IPL_IMAGE_HEADER   1
#define IPL_IMAGE_DATA   2
#define IPL_IMAGE_ROI   4
#define IPL_BORDER_REFLECT_101   4
#define IPL_BORDER_TRANSPARENT   5
#define IPL_IMAGE_MAGIC_VAL   ((int)sizeof(IplImage))
#define CV_TYPE_NAME_IMAGE   "opencv-image"
#define CV_IS_IMAGE_HDR(img)    ((img) != NULL && ((const IplImage*)(img))->nSize == sizeof(IplImage))
#define CV_IS_IMAGE(img)    (CV_IS_IMAGE_HDR(img) && ((IplImage*)img)->imageData != NULL)
#define IPL_DEPTH_64F   64
#define CV_IMAGE_ELEM(image, elemtype, row, col)    (((elemtype*)((image)->imageData + (image)->widthStep*(row)))[(col)])
#define CV_AUTO_STEP   0x7fffffff
#define CV_WHOLE_ARR   cvSlice( 0, 0x3fffffff )
#define CV_MAGIC_MASK   0xFFFF0000
#define CV_MAT_MAGIC_VAL   0x42420000
#define CV_TYPE_NAME_MAT   "opencv-matrix"
#define CV_IS_MAT_HDR(mat)
#define CV_IS_MAT_HDR_Z(mat)
#define CV_IS_MAT(mat)    (CV_IS_MAT_HDR(mat) && ((const CvMat*)(mat))->data.ptr != NULL)
#define CV_IS_MASK_ARR(mat)    (((mat)->type & (CV_MAT_TYPE_MASK & ~CV_8SC1)) == 0)
#define CV_ARE_TYPES_EQ(mat1, mat2)    ((((mat1)->type ^ (mat2)->type) & CV_MAT_TYPE_MASK) == 0)
#define CV_ARE_CNS_EQ(mat1, mat2)    ((((mat1)->type ^ (mat2)->type) & CV_MAT_CN_MASK) == 0)
#define CV_ARE_DEPTHS_EQ(mat1, mat2)    ((((mat1)->type ^ (mat2)->type) & CV_MAT_DEPTH_MASK) == 0)
#define CV_ARE_SIZES_EQ(mat1, mat2)    ((mat1)->rows == (mat2)->rows && (mat1)->cols == (mat2)->cols)
#define CV_IS_MAT_CONST(mat)    (((mat)->rows|(mat)->cols) == 1)
#define IPL2CV_DEPTH(depth)
#define CV_MAT_ELEM_PTR_FAST(mat, row, col, pix_size)
#define CV_MAT_ELEM_PTR(mat, row, col)    CV_MAT_ELEM_PTR_FAST( mat, row, col, CV_ELEM_SIZE((mat).type) )
#define CV_MAT_ELEM(mat, elemtype, row, col)    (*(elemtype*)CV_MAT_ELEM_PTR_FAST( mat, row, col, sizeof(elemtype)))
#define CV_MATND_MAGIC_VAL   0x42430000
#define CV_TYPE_NAME_MATND   "opencv-nd-matrix"
#define CV_MAX_DIM   32
#define CV_IS_MATND_HDR(mat)    ((mat) != NULL && (((const CvMatND*)(mat))->type & CV_MAGIC_MASK) == CV_MATND_MAGIC_VAL)
#define CV_IS_MATND(mat)    (CV_IS_MATND_HDR(mat) && ((const CvMatND*)(mat))->data.ptr != NULL)
#define CV_SPARSE_MAT_MAGIC_VAL   0x42440000
#define CV_TYPE_NAME_SPARSE_MAT   "opencv-sparse-matrix"
#define CV_IS_SPARSE_MAT_HDR(mat)
#define CV_IS_SPARSE_MAT(mat)    CV_IS_SPARSE_MAT_HDR(mat)
#define CV_NODE_VAL(mat, node)   ((void*)((uchar*)(node) + (mat)->valoffset))
#define CV_NODE_IDX(mat, node)   ((int*)((uchar*)(node) + (mat)->idxoffset))
#define CV_HIST_MAGIC_VAL   0x42450000
#define CV_HIST_UNIFORM_FLAG   (1 << 10)
#define CV_HIST_RANGES_FLAG   (1 << 11)
#define CV_HIST_ARRAY   0
#define CV_HIST_SPARSE   1
#define CV_HIST_TREE   CV_HIST_SPARSE
#define CV_HIST_UNIFORM   1
#define CV_IS_HIST(hist)
#define CV_IS_UNIFORM_HIST(hist)    (((hist)->type & CV_HIST_UNIFORM_FLAG) != 0)
#define CV_IS_SPARSE_HIST(hist)    CV_IS_SPARSE_MAT((hist)->bins)
#define CV_HIST_HAS_RANGES(hist)    (((hist)->type & CV_HIST_RANGES_FLAG) != 0)
#define CV_TERMCRIT_ITER   1
#define CV_TERMCRIT_NUMBER   CV_TERMCRIT_ITER
#define CV_TERMCRIT_EPS   2
#define CV_WHOLE_SEQ_END_INDEX   0x3fffffff
#define CV_WHOLE_SEQ   cvSlice(0, CV_WHOLE_SEQ_END_INDEX)
#define CV_STORAGE_MAGIC_VAL   0x42890000
#define CV_IS_STORAGE(storage)
#define CV_TREE_NODE_FIELDS(node_type)
#define CV_SEQUENCE_FIELDS()
#define CV_TYPE_NAME_SEQ   "opencv-sequence"
#define CV_TYPE_NAME_SEQ_TREE   "opencv-sequence-tree"
#define CV_SET_ELEM_FIELDS(elem_type)
Set 順序は保持されません。シーケンスの要素間に隙間ができることがあります。要素が挿入された後は、常に同じ場所にあります。要素が存在する場合,第1フィールド(フラグ)のMSB(最上位ビットまたは符号ビット)は0です。[【詳解】(英語]
#define CV_SET_FIELDS()
#define CV_SET_ELEM_IDX_MASK   ((1 << 26) - 1)
#define CV_SET_ELEM_FREE_FLAG   (1 << (sizeof(int)*8-1))
#define CV_IS_SET_ELEM(ptr)   (((CvSetElem*)(ptr))->flags >= 0)
#define CV_CONTOUR_FIELDS()
#define CV_SEQ_MAGIC_VAL   0x42990000
#define CV_IS_SEQ(seq)    ((seq) != NULL && (((CvSeq*)(seq))->flags & CV_MAGIC_MASK) == CV_SEQ_MAGIC_VAL)
#define CV_SET_MAGIC_VAL   0x42980000
#define CV_IS_SET(set)    ((set) != NULL && (((CvSeq*)(set))->flags & CV_MAGIC_MASK) == CV_SET_MAGIC_VAL)
#define CV_SEQ_ELTYPE_BITS   12
#define CV_SEQ_ELTYPE_MASK   ((1 << CV_SEQ_ELTYPE_BITS) - 1)
#define CV_SEQ_ELTYPE_POINT   CV_32SC2
#define CV_SEQ_ELTYPE_CODE   CV_8UC1
#define CV_SEQ_ELTYPE_GENERIC   0
#define CV_SEQ_ELTYPE_PTR   CV_MAKE_TYPE(CV_8U, 8 /*sizeof(void*)*/)
#define CV_SEQ_ELTYPE_PPOINT   CV_SEQ_ELTYPE_PTR
#define CV_SEQ_ELTYPE_INDEX   CV_32SC1
#define CV_SEQ_ELTYPE_GRAPH_EDGE   0
#define CV_SEQ_ELTYPE_GRAPH_VERTEX   0
#define CV_SEQ_ELTYPE_TRIAN_ATR   0
#define CV_SEQ_ELTYPE_CONNECTED_COMP   0
#define CV_SEQ_ELTYPE_POINT3D   CV_32FC3
#define CV_SEQ_KIND_BITS   2
#define CV_SEQ_KIND_MASK   (((1 << CV_SEQ_KIND_BITS) - 1)<<CV_SEQ_ELTYPE_BITS)
#define CV_SEQ_KIND_GENERIC   (0 << CV_SEQ_ELTYPE_BITS)
#define CV_SEQ_KIND_CURVE   (1 << CV_SEQ_ELTYPE_BITS)
#define CV_SEQ_KIND_BIN_TREE   (2 << CV_SEQ_ELTYPE_BITS)
#define CV_SEQ_KIND_GRAPH   (1 << CV_SEQ_ELTYPE_BITS)
#define CV_SEQ_KIND_SUBDIV2D   (2 << CV_SEQ_ELTYPE_BITS)
#define CV_SEQ_FLAG_SHIFT   (CV_SEQ_KIND_BITS + CV_SEQ_ELTYPE_BITS)
#define CV_SEQ_FLAG_CLOSED   (1 << CV_SEQ_FLAG_SHIFT)
#define CV_SEQ_FLAG_SIMPLE   (0 << CV_SEQ_FLAG_SHIFT)
#define CV_SEQ_FLAG_CONVEX   (0 << CV_SEQ_FLAG_SHIFT)
#define CV_SEQ_FLAG_HOLE   (2 << CV_SEQ_FLAG_SHIFT)
#define CV_GRAPH_FLAG_ORIENTED   (1 << CV_SEQ_FLAG_SHIFT)
#define CV_GRAPHCV_SEQ_KIND_GRAPH
#define CV_ORIENTED_GRAPH   (CV_SEQ_KIND_GRAPH|CV_GRAPH_FLAG_ORIENTED)
#define CV_SEQ_POINT_SET   (CV_SEQ_KIND_GENERIC| CV_SEQ_ELTYPE_POINT)
#define CV_SEQ_POINT3D_SET   (CV_SEQ_KIND_GENERIC| CV_SEQ_ELTYPE_POINT3D)
#define CV_SEQ_POLYLINE   (CV_SEQ_KIND_CURVE | CV_SEQ_ELTYPE_POINT)
#define CV_SEQ_POLYGON   (CV_SEQ_FLAG_CLOSED | CV_SEQ_POLYLINE )
#define CV_SEQ_CONTOUR   CV_SEQ_POLYGON
#define CV_SEQ_SIMPLE_POLYGON   (CV_SEQ_FLAG_SIMPLE | CV_SEQ_POLYGON )
#define CV_SEQ_CHAIN   (CV_SEQ_KIND_CURVE | CV_SEQ_ELTYPE_CODE)
#define CV_SEQ_CHAIN_CONTOUR   (CV_SEQ_FLAG_CLOSED | CV_SEQ_CHAIN)
#define CV_SEQ_POLYGON_TREE   (CV_SEQ_KIND_BIN_TREE | CV_SEQ_ELTYPE_TRIAN_ATR)
#define CV_SEQ_CONNECTED_COMP   (CV_SEQ_KIND_GENERIC | CV_SEQ_ELTYPE_CONNECTED_COMP)
#define CV_SEQ_INDEX   (CV_SEQ_KIND_GENERIC | CV_SEQ_ELTYPE_INDEX)
#define CV_SEQ_ELTYPE(seq)   ((seq)->flags & CV_SEQ_ELTYPE_MASK)
#define CV_SEQ_KIND(seq)   ((seq)->flags & CV_SEQ_KIND_MASK )
#define CV_IS_SEQ_INDEX(seq)
#define CV_IS_SEQ_CURVE(seq)   (CV_SEQ_KIND(seq) == CV_SEQ_KIND_CURVE)
#define CV_IS_SEQ_CLOSED(seq)   (((seq)->flags & CV_SEQ_FLAG_CLOSED) != 0)
#define CV_IS_SEQ_CONVEX(seq)   0
#define CV_IS_SEQ_HOLE(seq)   (((seq)->flags & CV_SEQ_FLAG_HOLE) != 0)
#define CV_IS_SEQ_SIMPLE(seq)   1
#define CV_IS_SEQ_POINT_SET(seq)    ((CV_SEQ_ELTYPE(seq) == CV_32SC2 || CV_SEQ_ELTYPE(seq) == CV_32FC2))
#define CV_IS_SEQ_POINT_SUBSET(seq)    (CV_IS_SEQ_INDEX( seq ) || CV_SEQ_ELTYPE(seq) == CV_SEQ_ELTYPE_PPOINT)
#define CV_IS_SEQ_POLYLINE(seq)    (CV_SEQ_KIND(seq) == CV_SEQ_KIND_CURVE && CV_IS_SEQ_POINT_SET(seq))
#define CV_IS_SEQ_POLYGON(seq)    (CV_IS_SEQ_POLYLINE(seq) && CV_IS_SEQ_CLOSED(seq))
#define CV_IS_SEQ_CHAIN(seq)    (CV_SEQ_KIND(seq) == CV_SEQ_KIND_CURVE && (seq)->elem_size == 1)
#define CV_IS_SEQ_CONTOUR(seq)    (CV_IS_SEQ_CLOSED(seq) && (CV_IS_SEQ_POLYLINE(seq) || CV_IS_SEQ_CHAIN(seq)))
#define CV_IS_SEQ_CHAIN_CONTOUR(seq)    (CV_IS_SEQ_CHAIN( seq ) && CV_IS_SEQ_CLOSED( seq ))
#define CV_IS_SEQ_POLYGON_TREE(seq)
#define CV_IS_GRAPH(seq)    (CV_IS_SET(seq) && CV_SEQ_KIND((CvSet*)(seq)) == CV_SEQ_KIND_GRAPH)
#define CV_IS_GRAPH_ORIENTED(seq)    (((seq)->flags & CV_GRAPH_FLAG_ORIENTED) != 0)
#define CV_IS_SUBDIV2D(seq)    (CV_IS_SET(seq) && CV_SEQ_KIND((CvSet*)(seq)) == CV_SEQ_KIND_SUBDIV2D)
#define CV_SEQ_WRITER_FIELDS()
#define CV_SEQ_READER_FIELDS()
#define CV_SEQ_ELEM(seq, elem_type, index)
#define CV_GET_SEQ_ELEM(elem_type, seq, index)   CV_SEQ_ELEM( (seq), elem_type, (index) )
#define CV_WRITE_SEQ_ELEM_VAR(elem_ptr, writer)
#define CV_WRITE_SEQ_ELEM(elem, writer)
#define CV_NEXT_SEQ_ELEM(elem_size, reader)
#define CV_PREV_SEQ_ELEM(elem_size, reader)
#define CV_READ_SEQ_ELEM(elem, reader)
#define CV_REV_READ_SEQ_ELEM(elem, reader)
#define CV_READ_CHAIN_POINT(_pt, reader)
#define CV_CURRENT_POINT(reader)   (*((CvPoint*)((reader).ptr)))
#define CV_PREV_POINT(reader)   (*((CvPoint*)((reader).prev_elem)))
#define CV_READ_EDGE(pt1, pt2, reader)
#define CV_NEXT_GRAPH_EDGE(edge, vertex)

型定義

typedef struct CvNArrayIterator CvNArrayIterator
typedef int(CV_CDECL * CvCmpFunc) (const void *a, const void *b, void *userdata)
typedef struct CvGraphScanner CvGraphScanner
typedef struct CvTreeNodeIterator CvTreeNodeIterator
typedef IplImage *(CV_STDCALL * Cv_iplCreateImageHeader) (int, int, int, char *, char *, int, int, int, int, int, IplROI *, IplImage *, void *, IplTileInfo *)
typedef void(CV_STDCALL * Cv_iplAllocateImageData) (IplImage *, int, int)
typedef void(CV_STDCALL * Cv_iplDeallocate) (IplImage *, int)
typedef IplROI *(CV_STDCALL * Cv_iplCreateROI) (int, int, int, int, int)
typedef IplImage *(CV_STDCALL * Cv_iplCloneImage) (const IplImage *)
typedef int(CV_CDECL * CvErrorCallback) (int status, const char *func_name, const char *err_msg, const char *file_name, int line, void *userdata)
typedef void CvArr
これは,関数のパラメータとして使われる「メタタイプのみを使用しています。関数のパラメータとして使用される「メタタイプ」です.[【詳解】(英語]
typedef int CVStatus
typedef uint64 CvRNG
typedef struct _IplImage IplImage
typedef struct _IplTileInfo IplTileInfo
typedef struct _IplROI IplROI
typedef struct _IplConvKernel IplConvKernel
typedef struct _IplConvKernelFP IplConvKernelFP
typedef struct CvMat CvMat
typedef struct CvMatND CvMatND
typedef struct CvSparseMat CvSparseMat
typedef struct CvSparseNode CvSparseNode
typedef struct CvSparseMatIterator CvSparseMatIterator
typedef int CvHistType
typedef struct CvHistogram CvHistogram
typedef struct CvRect CvRect
typedef struct CvTermCriteria CvTermCriteria
typedef struct CvPoint CvPoint
typedef struct CvPoint2D32f CvPoint2D32f
typedef struct CvPoint3D32f CvPoint3D32f
typedef struct CvPoint2D64f CvPoint2D64f
typedef struct CvPoint3D64f CvPoint3D64f
typedef struct CvSize CvSize
typedef struct CvSize2D32f CvSize2D32f
typedef struct CvBox2D CvBox2D
typedef struct CvLineIterator CvLineIterator
typedef struct CvSlice CvSlice
typedef struct CvScalar CvScalar
typedef struct CvMemBlock CvMemBlock
typedef struct CvMemStorage CvMemStorage
typedef struct CvMemStoragePos CvMemStoragePos
typedef struct CvSeqBlock CvSeqBlock
typedef struct CvSeq CvSeq
typedef struct CvSetElem CvSetElem
typedef struct CvSet CvSet
typedef struct CvChain CvChain
typedef struct CvContour CvContour
typedef CvContour CvPoint2DSeq
typedef struct CvSeqWriter CvSeqWriter
typedef struct CvSeqReader CvSeqReader

列挙型

enum {
CV_StsOk = 0 , CV_StsBackTrace = -1 , CV_StsError = -2 , CV_StsInternal = -3 ,
CV_StsNoMem = -4 , CV_StsBadArg = -5 , CV_StsBadFunc = -6 , CV_StsNoConv = -7 ,
CV_StsAutoTrace = -8 , CV_HeaderIsNull = -9 , CV_BadImageSize = -10 , CV_BadOffset = -11 ,
CV_BadDataPtr = -12 , CV_BadStep = -13 , CV_BadModelOrChSeq = -14 , CV_BadNumChannels = -15 ,
CV_BadNumChannel1U = -16 , CV_BadDepth = -17 , CV_BadAlphaChannel = -18 , CV_BadOrder = -19 ,
CV_BadOrigin = -20 , CV_BadAlign = -21 , CV_BadCallBack = -22 , CV_BadTileSize = -23 ,
CV_BadCOI = -24 , CV_BadROISize = -25 , CV_MaskIsTiled = -26 , CV_StsNullPtr = -27 ,
CV_StsVecLengthErr = -28 , CV_StsFilterStructContentErr = -29 , CV_StsKernelStructContentErr = -30 , CV_StsFilterOffsetErr = -31 ,
CV_StsBadSize = -201 , CV_StsDivByZero = -202 , CV_StsInplaceNotSupported = -203 , CV_StsObjectNotFound = -204 ,
CV_StsUnmatchedFormats = -205 , CV_StsBadFlag = -206 , CV_StsBadPoint = -207 , CV_StsBadMask = -208 ,
CV_StsUnmatchedSizes = -209 , CV_StsUnsupportedFormat = -210 , CV_StsOutOfRange = -211 , CV_StsParseError = -212 ,
CV_StsNotImplemented = -213 , CV_StsBadMemBlock = -214 , CV_StsAssert = -215 , CV_GpuNotSupported = -216 ,
CV_GpuApiCallError = -217 , CV_OpenGlNotSupported = -218 , CV_OpenGlApiCallError = -219 , CV_OpenCLApiCallError = -220 ,
CV_OpenCLDoubleNotSupported = -221 , CV_OpenCLInitError = -222 , CV_OpenCLNoAMDBlasFft = -223
}

関数

CVAPI (CvArr *) cvReshapeMatND(const CvArr *arr
データをコピーすることなく,多次元配列の形状を変更します.[【詳解】(英語]
CVAPI (void) cvReleaseImageHeader(IplImage **image)
画像ヘッダを解放します。[【詳解】(英語]
CVAPI (IplImage *) cvCreateImageHeader(CvSize size
画像ヘッダを作成しますが,画像データの割り当ては行いません.[【詳解】(英語]
CvSize int int int origin CV_DEFAULT (0)
CvSize int int int origin int align CV_DEFAULT (4))
CVAPI (int) cvGetImageCOI(const IplImage *image)
注目しているチャンネルのインデックスを返す[【詳解】(英語]
CVAPI (CvRect) cvGetImageROI(const IplImage *image)
画像の ROI を返します.[【詳解】(英語]
CVAPI (CvMat *) cvCreateMatHeader(int rows
行列ヘッダを作成しますが,行列データの割り当ては行いません.[【詳解】(英語]
int int int void *data CV_DEFAULT (NULL)
int int int void *data int step CV_DEFAULT (CV_AUTOSTEP))
CV_INLINE void cvDecRefData (CvArr *arr)
配列のデータ参照カウンタをデクリメントします.[【詳解】(英語]
CV_INLINE int cvIncRefData (CvArr *arr)
配列データの参照カウンタをインクリメントします.[【詳解】(英語]
CvMat int int int delta_row CV_DEFAULT (1))
CV_INLINE CvMat * cvGetRow (const CvArr *arr, CvMat *submat, int row)
CV_INLINE CvMat * cvGetCol (const CvArr *arr, CvMat *submat, int col)
CVAPI (CvMatND *) cvCreateMatNDHeader(int dims
新しい行列ヘッダを作成しますが,行列データの割り当ては行いません.[【詳解】(英語]
CV_INLINE void cvReleaseMatND (CvMatND **mat)
多次元配列を解放します.[【詳解】(英語]
CVAPI (CvSparseMat *) cvCreateSparseMat(int dims
疎な配列を作成します.[【詳解】(英語]
CVAPI (CvSparseNode *) cvInitSparseMatIterator(const CvSparseMat *mat
疎な配列要素のイテレータを初期化します.[【詳解】(英語]
CV_INLINE CvSparseNode * cvGetNextSparseNode (CvSparseMatIterator *mat_iterator)
疎な行列の次の要素を返します.[【詳解】(英語]
CVAPI (uchar *) cvPtr1D(const CvArr *arr
特定の配列要素へのポインタを返します。[【詳解】(英語]
CVAPI (CvScalar) cvGet1D(const CvArr *arr
特定の配列要素を返します.[【詳解】(英語]
CVAPI (double) cvGetReal1D(const CvArr *arr
シングルチャンネルの 1D, 2D, 3D または nD 配列の,指定された要素を返します.[【詳解】(英語]
CVAPI (CvSize) cvGetSize(const CvArr *arr)
行列あるいは画像ROIのサイズを返します.[【詳解】(英語]
CVAPI (CvTermCriteria) cvCheckTermCriteria(CvTermCriteria criteria
CV_INLINE void cvSubS (const CvArr *src, CvScalar value, CvArr *dst, const CvArr *mask CV_DEFAULT(NULL))
CVAPI (float) cvFastArctan(float y
CvRNG double iter_factor CV_DEFAULT (1.))
CvMat int maxiter CV_DEFAULT (20)
CvMat int maxiter int fig CV_DEFAULT (100))
CvArr int method CV_DEFAULT (CV_LU))
CvArr CvArr double eps int lowindex CV_DEFAULT (-1)
CvScalar value CV_DEFAULT (cvRealScalar(1)))
const CvArr *arr2 int norm_type CV_DEFAULT (CV_L2)
CvArr double a double b CV_DEFAULT (0.)
CvArr int dim int op CV_DEFAULT (CV_REDUCE_SUM))
CVAPI (CvMemStorage *) cvCreateMemStorage(int block_size CV_DEFAULT(0))
CVAPI (CvSeq *) cvCreateSeq(int seq_flags
輪郭スキャナを解放し,最初の外郭へのポインタを返します.[【詳解】(英語]
CVAPI (schar *) cvSeqPush(CvSeq *seq
void CvSlice slice CV_DEFAULT (CV_WHOLE_SEQ))
CV_INLINE CvSeq * cvCloneSeq (const CvSeq *seq, CvMemStorage *storage CV_DEFAULT(NULL))
CVAPI (CvSet *) cvCreateSet(int set_flags
CV_INLINE CvSetElem * cvSetNew (CvSet *set_header)
CV_INLINE void cvSetRemoveByPtr (CvSet *set_header, void *elem)
CV_INLINE CvSetElem * cvGetSetElem (const CvSet *set_header, int idx)
CVAPI (CvGraph *) cvCreateGraph(int graph_flags
CVAPI (CvGraphEdge *) cvFindGraphEdge(const CvGraph *graph
CVAPI (CvGraphScanner *) cvCreateGraphScanner(CvGraph *graph
CvGraphVtx *vtx int mask CV_DEFAULT (CV_GRAPH_ALL_ITEMS))
CVAPI (int64) cvGetTickCount(void)
CVAPI (const char *) cvErrorStr(int status)
CVAPI (CvErrorCallback) cvRedirectError(CvErrorCallback error_handler
CV_INLINE CvRNG cvRNG (int64 seed CV_DEFAULT(-1))
乱数生成器の状態を初期化します。[【詳解】(英語]
CV_INLINE unsigned cvRandInt (CvRNG *rng)
32 ビットの符号なし整数を返し,RNG を更新します.[【詳解】(英語]
CV_INLINE double cvRandReal (CvRNG *rng)
浮動小数点型の乱数を返し,RNGを更新します.[【詳解】(英語]
CV_INLINE IplImage cvIplImage ()
CV_INLINE CvMat cvMat (int rows, int cols, int type, void *data CV_DEFAULT(NULL))
CV_INLINE double cvmGet (const CvMat *mat, int row, int col)
シングルチャンネルの浮動小数点型行列の指定された要素を返します.[【詳解】(英語]
CV_INLINE void cvmSet (CvMat *mat, int row, int col, double value)
シングルチャンネルの浮動小数点型行列の,指定された要素を設定します.[【詳解】(英語]
CV_INLINE int cvIplDepth (int type)
CV_INLINE CvMatND cvMatND ()
CV_INLINE CvRect cvRect (int x, int y, int width, int height)
CV_INLINE IplROI cvRectToROI (CvRect rect, int coi)
CV_INLINE CvRect cvROIToRect (IplROI roi)
CV_INLINE CvTermCriteria cvTermCriteria (int type, int max_iter, double epsilon)
CV_INLINE CvPoint cvPoint (int x, int y)
CV_INLINE CvPoint2D32f cvPoint2D32f (double x, double y)
CV_INLINE CvPoint2D32f cvPointTo32f (CvPoint point)
CV_INLINE CvPoint cvPointFrom32f (CvPoint2D32f point)
CV_INLINE CvPoint3D32f cvPoint3D32f (double x, double y, double z)
CV_INLINE CvPoint2D64f cvPoint2D64f (double x, double y)
CV_INLINE CvPoint3D64f cvPoint3D64f (double x, double y, double z)
CV_INLINE CvSize cvSize (int width, int height)
CV_INLINE CvSize2D32f cvSize2D32f (double width, double height)
CV_INLINE CvSlice cvSlice (int start, int end)
CV_INLINE CvScalar cvScalar (double val0, double val1 CV_DEFAULT(0), double val2 CV_DEFAULT(0), double val3 CV_DEFAULT(0))
CV_INLINE CvScalar cvRealScalar (double val0)
CV_INLINE CvScalar cvScalarAll (double val0123)

変数

int depth
int int channels
CvSize size
int coi
CvRect rect
int cols
int int type
int rows
CvMat * submat
CvMat int start_row
CvMat int int end_row
CvMat int start_col
CvMat int int end_col
void * data
int CvScalar * scalar
const int * sizes
int dims
CvSparseMatIterator * mat_iterator
CvArr ** arrs
CvArr const CvArr * mask
CvArr const CvArr CvMatND * stubs
CvArr const CvArr CvMatND CvNArrayIterator * array_iterator
int index
int idx0
int int idx1
int int int idx2
const int * idx
int CvScalar value
CvMat * header
IplImage * image_header
int sizeof_header
int CvArr int new_cn
int CvArr int int new_dims
int CvArr int int int * new_sizes
CvArr * dst
void int step
CvArr * dst0
CvArr CvArr * dst1
CvArr CvArr CvArr * dst2
CvArr CvArr CvArr CvArr * dst3
const CvArr * src1
const CvArr const CvArr * src2
const CvArr const CvArr const CvArr * src3
int src_count
int CvArr int dst_count
int CvArr int const int * from_to
int CvArr int const int int pair_count
double default_eps
double int default_max_iters
CvScalar scale
double alpha
double const CvArr double beta
double const CvArr double double gamma
const CvArr * lower
const CvArr const CvArr * upper
const CvArr CvArr int cmp_op
const CvArr * y
const CvArr CvArr * magnitude
const CvArr * angle
const CvArr CvArr * x
CvArr double power
CvArr * arr
CvArr int dist_type
CvArr int CvScalar param1
CvArr int CvScalar CvScalar param2
CvRNG * rng
CvMat * roots
CvMat * roots2
CvArr const CvMat * transmat
CvArr const CvMat * mat
CvArr int order
CvArr * W
const CvArr * U
const CvArr const CvArr * V
const CvArr const CvArr const CvArr * B
const CvArr const CvArr const CvArr CvArr * X
const CvArr const CvArr const CvArr CvArr int flags
CvArr * evects
CvArr CvArr * evals
double start
double double end
int count
int CvArr * cov_mat
int CvArr CvArr * avg
CvArr * mean
CvArr CvArr * eigenvals
CvArr CvArr CvArr * eigenvects
const CvArr const CvArr CvArr * result
const CvArr * vec2
CvScalar CvScalar * std_dev
double * min_val
double double * max_val
const CvSeq * seq
CvMemStoragePos * pos
size_t header_size
size_t size_t elem_size
size_t size_t CvMemStorage * storage
int delta_elems
const void * elements
int before_index
const void * element
CvSeqWriter * writer
CvSeqReader * reader
int int void int total
int int void int CvSeq CvSeqBlock * block
CvSlice slice
int const CvArr * from_arr
CvCmpFunc func
const void * elem
const void CvCmpFunc int is_sorted
const void CvCmpFunc int int * elem_idx
CvMemStorage CvSeq ** labels
CvMemStorage CvSeq CvCmpFunc is_equal
CvMemStorage CvSeq CvCmpFunc void * userdata
int direction
int int vtx_size
int int int edge_size
CvGraphVtx * vtx
int start_idx
int int end_idx
CvGraphVtx * start_vtx
CvGraphVtx CvGraphVtx * end_vtx
int vtx_idx
CvArr const CvArr * lut
const void * first
const void int max_level
void * parent
void void * frame
int cluster_count
int CvArr CvTermCriteria termcrit
Cv_iplAllocateImageData allocate_data
Cv_iplAllocateImageData Cv_iplDeallocate deallocate
Cv_iplAllocateImageData Cv_iplDeallocate Cv_iplCreateROI create_roi
Cv_iplAllocateImageData Cv_iplDeallocate Cv_iplCreateROI Cv_iplCloneImage clone_image
const char * func_name
const char const char * err_msg
const char const char const char * file_name
const char const char const char int line
const char ** description
const char const char ** filename

Graph

We represent a graph as a set of vertices. Vertices contain their adjacency lists (more exactly, pointers to first incoming or outcoming edge (or 0 if isolated vertex)). Edges are stored in another set. There is a singly-linked list of incoming/outcoming edges for each vertex.

Each edge consists of:

  • Two pointers to the starting and ending vertices (vtx[0] and vtx[1] respectively).

    A graph may be oriented or not. In the latter case, edges between vertex i to vertex j are not distinguished during search operations.

  • Two pointers to next edges for the starting and ending vertices, where next[0] points to the next edge in the vtx[0] adjacency list and next[1] points to the next edge in the vtx[1] adjacency list.
参照
CvGraphEdge, CvGraphVtx, CvGraphVtx2D, CvGraph
typedef struct CvGraphEdge CvGraphEdge
typedef struct CvGraphVtx CvGraphVtx
typedef struct CvGraphVtx2D CvGraphVtx2D
typedef struct CvGraph CvGraph
#define CV_GRAPH_EDGE_FIELDS()
#define CV_GRAPH_VERTEX_FIELDS()
#define CV_GRAPH_FIELDS()
#define CV_TYPE_NAME_GRAPH   "opencv-graph"

Flags for cvCalcCovarMatrix

参照
cvCalcCovarMatrix
#define CV_COVAR_SCRAMBLED   0
#define CV_COVAR_NORMAL   1
#define CV_COVAR_USE_AVG   2
#define CV_COVAR_SCALE   4
#define CV_COVAR_ROWS   8
#define CV_COVAR_COLS   16

Flags for cvNorm and cvNormalize

#define CV_C   1
#define CV_L1   2
#define CV_L2   4
#define CV_NORM_MASK   7
#define CV_RELATIVE   8
#define CV_DIFF   16
#define CV_MINMAX   32
#define CV_DIFF_C   (CV_DIFF | CV_C)
#define CV_DIFF_L1   (CV_DIFF | CV_L1)
#define CV_DIFF_L2   (CV_DIFF | CV_L2)
#define CV_RELATIVE_C   (CV_RELATIVE | CV_C)
#define CV_RELATIVE_L1   (CV_RELATIVE | CV_L1)
#define CV_RELATIVE_L2   (CV_RELATIVE | CV_L2)

Flags for cvReduce

#define CV_REDUCE_SUM   0
#define CV_REDUCE_AVG   1
#define CV_REDUCE_MAX   2
#define CV_REDUCE_MIN   3

Flags for cvDFT, cvDCT and cvMulSpectrums

#define CV_DXT_FORWARD   0
#define CV_DXT_INVERSE   1
#define CV_DXT_SCALE   2
#define CV_DXT_INV_SCALE   (CV_DXT_INVERSE + CV_DXT_SCALE)
#define CV_DXT_INVERSE_SCALE   CV_DXT_INV_SCALE
#define CV_DXT_ROWS   4
#define CV_DXT_MUL_CONJ   8

詳解

マクロ定義詳解

CV_ASSERT

#define CV_ASSERT ( Condition )
値:
{ \
if( !(Condition) ) \
CV_ERROR( CV_StsInternal, "Assertion: " #Condition " failed" ); \
}
@ CV_StsInternal
Definition: core/types_c.h:148

ランタイムアサーションマクロ

CV_CALL

#define CV_CALL ( Func )
値:
{ \
Func; \
CV_CHECK(); \
}

CV_CALL マクロは,CV(またはIPL)関数を呼び出し,エラー状態をチェックし,関数が失敗した場合はエラーを通知します.親ノード」のエラー処理モードで有用です.

CV_CHECK

#define CV_CHECK ( )
値:
{ \
if( cvGetErrStatus() < 0 ) \
CV_ERROR( CV_StsBackTrace, "Inner function failed." ); \
}
@ CV_StsBackTrace
Definition: core/types_c.h:146

CV_CHECK マクロは,CV(またはIPL)関数呼び出し後にエラー状態をチェックします.エラーが検出された場合,制御は終了ラベルに移されます.

CV_CONTOUR_FIELDS

#define CV_CONTOUR_FIELDS ( )
値:
CvRect rect; \
int color; \
int reserved[3];
#define CV_SEQUENCE_FIELDS()
Definition: core/types_c.h:1553

CV_COVAR_COLS

#define CV_COVAR_COLS   16

cvCalcCovarMatrix のフラグ,すべての入力ベクトルが1つの行列に,その列として格納されます.

CV_COVAR_NORMAL

#define CV_COVAR_NORMAL   1

cvCalcCovarMatrix のフラグ, [v1-avg, v2-avg,...] * transpose([v1-avg,v2-avg,...]) .

CV_COVAR_ROWS

#define CV_COVAR_ROWS   8

cvCalcCovarMatrix のフラグ,すべての入力ベクトルがその行として1つの行列に格納されます.

CV_COVAR_SCALE

#define CV_COVAR_SCALE   4

cvCalcCovarMatrix のフラグ,共分散行列の係数をベクトルの数でスケーリングします.

CV_COVAR_SCRAMBLED

#define CV_COVAR_SCRAMBLED   0

cvCalcCovarMatrix のフラグ, transpose([v1-avg, v2-avg,...]) * [v1-avg,v2-avg,...] .

CV_COVAR_USE_AVG

#define CV_COVAR_USE_AVG   2

cvCalcCovarMatrix のフラグ.平均(つまり,平均ベクトル)を計算せず,代わりに入力ベクトルを利用します(共分散行列を部分的に計算するのに便利です).

CV_DXT_MUL_CONJ

#define CV_DXT_MUL_CONJ   8

cvMulSpectrums の第2引数を共役にします.

CV_DXT_ROWS

#define CV_DXT_ROWS   4

各行を個別に変換します.

CV_DXT_SCALE

#define CV_DXT_SCALE   2

結果を配列のサイズで割ります.

CV_ERROR

#define CV_ERROR ( Code,
Msg
)
値:
{ \
cvError( (Code), cvFuncName, Msg, __FILE__, __LINE__ ); \
__CV_EXIT__; \
}

CV_ERROR マクロは,無条件に,渡されたコードとメッセージでエラーを発生させます.エラーを発生させた後,制御は終了ラベルに移されます.

CV_FUNCNAME

#define CV_FUNCNAME ( Name )    static char cvFuncName[] = Name

CV_FUNCNAME マクロは,CV_ERROR マクロで利用される icvFuncName 定数を定義します.

CV_GRAPH_EDGE_FIELDS

#define CV_GRAPH_EDGE_FIELDS ( )
値:
int flags; \
float weight; \
struct CvGraphEdge* next[2]; \
struct CvGraphVtx* vtx[2];
Definition: core/types_c.h:1651
Definition: core/types_c.h:1657

CV_GRAPH_FIELDS

#define CV_GRAPH_FIELDS ( )
値:
CV_SET_FIELDS() \
CvSet* edges;

グラフは,集合(これは頂点の集合)から「派生」し,別の集合(辺)を含みます.

CV_GRAPH_FLAG_ORIENTED

#define CV_GRAPH_FLAG_ORIENTED   (1 << CV_SEQ_FLAG_SHIFT)

グラフのフラグ

CV_GRAPH_ITEM_VISITED_FLAG

#define CV_GRAPH_ITEM_VISITED_FLAG   (1 << 30)

グラフの頂点と辺のフラグ

CV_GRAPH_VERTEX_FIELDS

#define CV_GRAPH_VERTEX_FIELDS ( )
値:
int flags; \
struct CvGraphEdge* first;

CV_HIST_RANGES_FLAG

#define CV_HIST_RANGES_FLAG   (1 << 11)

ビンの範囲が既に設定されているかどうかを示します.

CV_HIST_UNIFORM

#define CV_HIST_UNIFORM   1

これは,パラメータとしてのみ利用されるべきもので, hist->type の CV_HIST_UNIFORM_FLAG に変わります.

CV_IABS

#define CV_IABS ( a )    (((a) ^ ((a) < 0 ? -1 : 0)) - ((a) < 0 ? -1 : 0))

ジャンプしない絶対値

CV_IMAGE_ELEM

#define CV_IMAGE_ELEM ( image,
elemtype,
row,
col
)     (((elemtype*)((image)->imageData + (image)->widthStep*(row)))[(col)])

マルチチャンネル画像の場合は,(col)にチャンネル数を乗じた値を指定します.

CV_IMIN

#define CV_IMIN ( a,
b
)    ((a) ^ (((a)^(b)) & (((a) < (b)) - 1)))

ジャンプを伴わない最小値と最大値

CV_IS_HIST

#define CV_IS_HIST ( hist )
値:
((hist) != NULL && \
(((CvHistogram*)(hist))->type & CV_MAGIC_MASK) == CV_HIST_MAGIC_VAL && \
(hist)->bins != NULL)
Definition: core/types_c.h:818

CV_IS_MAT_HDR

#define CV_IS_MAT_HDR ( mat )
値:
((mat) != NULL && \
(((const CvMat*)(mat))->type & CV_MAGIC_MASK) == CV_MAT_MAGIC_VAL && \
((const CvMat*)(mat))->cols > 0 && ((const CvMat*)(mat))->rows > 0)
Definition: core/types_c.h:469

CV_IS_MAT_HDR_Z

#define CV_IS_MAT_HDR_Z ( mat )
値:
((mat) != NULL && \
(((const CvMat*)(mat))->type & CV_MAGIC_MASK) == CV_MAT_MAGIC_VAL && \
((const CvMat*)(mat))->cols >= 0 && ((const CvMat*)(mat))->rows >= 0)

CV_IS_SEQ_INDEX

#define CV_IS_SEQ_INDEX ( seq )
値:
((CV_SEQ_ELTYPE(seq) == CV_SEQ_ELTYPE_INDEX) && \
(CV_SEQ_KIND(seq) == CV_SEQ_KIND_GENERIC))
#define CV_SEQ_KIND_GENERIC
Definition: core/types_c.h:1742
#define CV_SEQ_ELTYPE_INDEX
Definition: core/types_c.h:1731

フラグチェック

CV_IS_SEQ_POINT_SET

#define CV_IS_SEQ_POINT_SET ( seq )     ((CV_SEQ_ELTYPE(seq) == CV_32SC2 || CV_SEQ_ELTYPE(seq) == CV_32FC2))

型チェック用マクロ

CV_IS_SEQ_POLYGON_TREE

#define CV_IS_SEQ_POLYGON_TREE ( seq )
値:
(CV_SEQ_ELTYPE (seq) == CV_SEQ_ELTYPE_TRIAN_ATR && \
CV_SEQ_KIND( seq ) == CV_SEQ_KIND_BIN_TREE )
#define CV_SEQ_ELTYPE_TRIAN_ATR
Definition: core/types_c.h:1734

CV_IS_SET_ELEM

#define CV_IS_SET_ELEM ( ptr )    (((CvSetElem*)(ptr))->flags >= 0)

ptr が指す要素が集合に属しているかどうかをチェックします.

CV_IS_SPARSE_MAT_HDR

#define CV_IS_SPARSE_MAT_HDR ( mat )
値:
((mat) != NULL && \
(((const CvSparseMat*)(mat))->type & CV_MAGIC_MASK) == CV_SPARSE_MAT_MAGIC_VAL)
Definition: core/types_c.h:747

CV_IS_STORAGE

#define CV_IS_STORAGE ( storage )
値:
((storage) != NULL && \
(((CvMemStorage*)(storage))->signature & CV_MAGIC_MASK) == CV_STORAGE_MAGIC_VAL)
Definition: core/types_c.h:1498

CV_KMEANS_USE_INITIAL_LABELS

#define CV_KMEANS_USE_INITIAL_LABELS   1

この関数は,サンプルベクトルの配列を指定された数のクラスにクラスタリングする K-means アルゴリズムを実装しています.

CV_MAT_ELEM_PTR_FAST

#define CV_MAT_ELEM_PTR_FAST ( mat,
row,
col,
pix_size
)
値:
(assert( (unsigned)(row) < (unsigned)(mat).rows && \
(unsigned)(col) < (unsigned)(mat).cols ), \
(mat).data.ptr + (size_t)(mat).step*(row) + (pix_size)*(col))

CV_NEXT_GRAPH_EDGE

#define CV_NEXT_GRAPH_EDGE ( edge,
vertex
)
値:
(assert((edge)->vtx[0] == (vertex) || (edge)->vtx[1] == (vertex)), \
(edge)->next[(edge)->vtx[1] == (vertex)])

与えられた頂点の次のグラフエッジを返す関数です.

CV_NEXT_SEQ_ELEM

#define CV_NEXT_SEQ_ELEM ( elem_size,
reader
)
値:
{ \
if( ((reader).ptr += (elem_size)) >= (reader).block_max ) \
{ \
cvChangeSeqBlock( &(reader), 1 ); \
} \
}

リーダの位置を前方に移動します.

CV_PREV_SEQ_ELEM

#define CV_PREV_SEQ_ELEM ( elem_size,
reader
)
値:
{ \
if( ((reader).ptr -= (elem_size)) < (reader).block_min ) \
{ \
cvChangeSeqBlock( &(reader), -1 ); \
} \
}

リーダの位置を後方に移動させます.

CV_READ_CHAIN_POINT

#define CV_READ_CHAIN_POINT ( _pt,
reader
)
値:
{ \
(_pt) = (reader).pt; \
if( (reader).ptr ) \
{ \
CV_READ_SEQ_ELEM( (reader).code, (reader)); \
assert( ((reader).code & ~7) == 0 ); \
(reader).pt.x += (reader).deltas[(int)(reader).code][0]; \
(reader).pt.y += (reader).deltas[(int)(reader).code][1]; \
} \
}

CV_READ_EDGE

#define CV_READ_EDGE ( pt1,
pt2,
reader
)
値:
{ \
assert( sizeof(pt1) == sizeof(CvPoint) && \
sizeof(pt2) == sizeof(CvPoint) && \
reader.seq->elem_size == sizeof(CvPoint)); \
(pt1) = CV_PREV_POINT( reader ); \
(pt2) = CV_CURRENT_POINT( reader ); \
(reader).prev_elem = (reader).ptr; \
CV_NEXT_SEQ_ELEM( sizeof(CvPoint), (reader)); \
}
Definition: core/types_c.h:951

CV_READ_SEQ_ELEM

#define CV_READ_SEQ_ELEM ( elem,
reader
)
値:
{ \
assert( (reader).seq->elem_size == sizeof(elem)); \
memcpy( &(elem), (reader).ptr, sizeof((elem))); \
CV_NEXT_SEQ_ELEM( sizeof(elem), reader ) \
}

要素を読み込んで,読み込み位置を前方に移動する

CV_REV_READ_SEQ_ELEM

#define CV_REV_READ_SEQ_ELEM ( elem,
reader
)
値:
{ \
assert( (reader).seq->elem_size == sizeof(elem)); \
memcpy(&(elem), (reader).ptr, sizeof((elem))); \
CV_PREV_SEQ_ELEM( sizeof(elem), reader ) \
}

要素を読み込んで,読み込み位置を後方に移動: 要素を読み込んで,読み込み位置を後方に移動

CV_SEQ_CHAIN

#define CV_SEQ_CHAIN   (CV_SEQ_KIND_CURVE | CV_SEQ_ELTYPE_CODE)

チェーンコード化された曲線

CV_SEQ_CONNECTED_COMP

#define CV_SEQ_CONNECTED_COMP   (CV_SEQ_KIND_GENERIC | CV_SEQ_ELTYPE_CONNECTED_COMP)

連結成分の順序

CV_SEQ_ELEM

#define CV_SEQ_ELEM ( seq,
elem_type,
index
)
値:
\
( assert(sizeof((seq)->first[0]) == sizeof(CvSeqBlock) && \
(seq)->elem_size == sizeof(elem_type)), \
(elem_type*)((seq)->first && (unsigned)index < \
(unsigned)((seq)->first->count) ? \
(seq)->first->data + (index) * sizeof(elem_type) : \
cvGetSeqElem( (CvSeq*)(seq), (index) )))
Definition: core/types_c.h:1524
Definition: core/types_c.h:1574

CV_SEQ_ELTYPE_CODE

#define CV_SEQ_ELTYPE_CODE   CV_8UC1

フリーマンコード 0..7

CV_SEQ_ELTYPE_CONNECTED_COMP

#define CV_SEQ_ELTYPE_CONNECTED_COMP   0

連結成分

CV_SEQ_ELTYPE_GRAPH_EDGE

#define CV_SEQ_ELTYPE_GRAPH_EDGE   0

次の辺、次の辺_d、次の辺_o、次の辺_d

CV_SEQ_ELTYPE_GRAPH_VERTEX

#define CV_SEQ_ELTYPE_GRAPH_VERTEX   0

第一エッジ, &(x,y)

CV_SEQ_ELTYPE_INDEX

#define CV_SEQ_ELTYPE_INDEX   CV_32SC1

#(x,y)

CV_SEQ_ELTYPE_POINT

#define CV_SEQ_ELTYPE_POINT   CV_32SC2

(x,y)

CV_SEQ_ELTYPE_POINT3D

#define CV_SEQ_ELTYPE_POINT3D   CV_32FC3

(x,y,z)

CV_SEQ_ELTYPE_PPOINT

#define CV_SEQ_ELTYPE_PPOINT   CV_SEQ_ELTYPE_PTR

&(x,y)

CV_SEQ_ELTYPE_TRIAN_ATR

#define CV_SEQ_ELTYPE_TRIAN_ATR   0

二分木の頂点

CV_SEQ_FLAG_CLOSED

#define CV_SEQ_FLAG_CLOSED   (1 << CV_SEQ_FLAG_SHIFT)

曲線のフラグ

CV_SEQ_INDEX

#define CV_SEQ_INDEX   (CV_SEQ_KIND_GENERIC | CV_SEQ_ELTYPE_INDEX)

整数の列

CV_SEQ_KIND_GENERIC

#define CV_SEQ_KIND_GENERIC   (0 << CV_SEQ_ELTYPE_BITS)

配列の種類

CV_SEQ_KIND_GRAPH

#define CV_SEQ_KIND_GRAPH   (1 << CV_SEQ_ELTYPE_BITS)

疎な配列(セット)の種類

CV_SEQ_POINT_SET

#define CV_SEQ_POINT_SET   (CV_SEQ_KIND_GENERIC| CV_SEQ_ELTYPE_POINT)

点の集合

CV_SEQ_POLYGON_TREE

#define CV_SEQ_POLYGON_TREE   (CV_SEQ_KIND_BIN_TREE | CV_SEQ_ELTYPE_TRIAN_ATR)

輪郭の二分木

CV_SEQ_READER_FIELDS

#define CV_SEQ_READER_FIELDS ( )
値:
int header_size; \
CvSeq* seq; \
CvSeqBlock* block; \
schar* ptr; \
schar* block_min; \
schar* block_max; \
int delta_index; \
schar* prev_elem;

前の要素へのポインタ

CV_SEQ_WRITER_FIELDS

#define CV_SEQ_WRITER_FIELDS ( )
値:
int header_size; \
CvSeq* seq; \
CvSeqBlock* block; \
schar* ptr; \
schar* block_min; \
schar* block_max;

ブロックの終わりへのポインタ

CV_SEQUENCE_FIELDS

#define CV_SEQUENCE_FIELDS ( )
値:
int total; \
int elem_size; \
schar* block_max; \
schar* ptr; \
int delta_elems; \
CvMemStorage* storage; \
CvSeqBlock* free_blocks; \
CvSeqBlock* first;
#define CV_TREE_NODE_FIELDS(node_type)
Definition: core/types_c.h:1535

読み書き可能なシーケンス。シーケンスには,動的に要素を挿入したり,削除したりすることができます.最初のシーケンスブロックへのポインタ。

CV_SET_ELEM_FIELDS

#define CV_SET_ELEM_FIELDS ( elem_type )
値:
int flags; \
struct elem_type* next_free;

Set 順序は保持されません。シーケンスの要素間に隙間ができることがあります。要素が挿入された後は、常に同じ場所にあります。要素が存在する場合,第1フィールド(フラグ)のMSB(最上位ビットまたは符号ビット)は0です。

CV_SET_FIELDS

#define CV_SET_FIELDS ( )
値:
CvSetElem* free_elems; \
int active_count;

CV_TREE_NODE_FIELDS

#define CV_TREE_NODE_FIELDS ( node_type )
値:
int flags; \
int header_size; \
struct node_type* h_prev; \
struct node_type* h_next; \
struct node_type* v_prev; \
struct node_type* v_next

2番目のシーケンス。

CV_TURN_ON_IPL_COMPATIBILITY

#define CV_TURN_ON_IPL_COMPATIBILITY ( )
値:
cvSetIPLAllocators( iplCreateImageHeader, iplAllocateImage, \
iplDeallocate, iplCreateROI, iplCloneImage )

CV_WRITE_SEQ_ELEM

#define CV_WRITE_SEQ_ELEM ( elem,
writer
)
値:
{ \
assert( (writer).seq->elem_size == sizeof(elem)); \
if( (writer).ptr >= (writer).block_max ) \
{ \
cvCreateSeqBlock( &writer); \
} \
assert( (writer).ptr <= (writer).block_max - sizeof(elem));\
memcpy((writer).ptr, &(elem), sizeof(elem)); \
(writer).ptr += sizeof(elem); \
}

CV_WRITE_SEQ_ELEM_VAR

#define CV_WRITE_SEQ_ELEM_VAR ( elem_ptr,
writer
)
値:
{ \
if( (writer).ptr >= (writer).block_max ) \
{ \
cvCreateSeqBlock( &writer); \
} \
memcpy((writer).ptr, elem_ptr, (writer).seq->elem_size);\
(writer).ptr += (writer).seq->elem_size; \
}

シーケンスに要素を追加する。

cvGetGraphVtx

#define cvGetGraphVtx ( graph,
idx
)    (CvGraphVtx*)cvGetSetElem((CvSet*)(graph), (idx))

グラフの頂点を指定されたインデックスで検索する

cvGraphEdgeIdx

#define cvGraphEdgeIdx ( graph,
edge
)    ((edge)->flags & CV_SET_ELEM_IDX_MASK)

グラフ辺のポインタを指定して,その辺のインデックスを検索する

cvGraphVtxIdx

#define cvGraphVtxIdx ( graph,
vtx
)    ((vtx)->flags & CV_SET_ELEM_IDX_MASK)

ポインタが与えられたグラフの頂点のインデックスを取得します.

cvMatMulAdd

#define cvMatMulAdd ( src1,
src2,
src3,
dst
)    cvGEMM( (src1), (src2), 1., (src3), 1., (dst), 0 )

行列変換:dst = A*B + C, Cはオプション

cvReshapeND

#define cvReshapeND ( arr,
header,
new_cn,
new_dims,
new_sizes
)
値:
cvReshapeMatND( (arr), sizeof(*(header)), (header), \
(new_cn), (new_dims), (new_sizes))

IPL2CV_DEPTH

#define IPL2CV_DEPTH ( depth )
値:
((((CV_8U)+(CV_16U<<4)+(CV_32F<<8)+(CV_64F<<16)+(CV_8S<<20)+ \
(CV_16S<<24)+(CV_32S<<28)) >> ((((depth) & 0xF0) >> 2) + \
(((depth) & IPL_DEPTH_SIGN) ? 20 : 0))) & 15)

IPL_BORDER_REFLECT_101

#define IPL_BORDER_REFLECT_101   4

追加のボーダーモード

IPL_DEPTH_64F

#define IPL_DEPTH_64F   64

IplImageの倍精度浮動小数点データを格納するための

OPENCV_ASSERT

#define OPENCV_ASSERT ( expr,
func,
context
)
値:
{if (! (expr)) \
{OPENCV_ERROR(CV_StsInternal,(func),(context));}}

OPENCV_CALL

#define OPENCV_CALL ( Func )
値:
{ \
Func; \
}

型定義詳解

CvArr

typedef void CvArr

これは,関数のパラメータとして使われる「メタタイプのみを使用しています。関数のパラメータとして使用される「メタタイプ」です.

これは,この関数が IplImage* や CvMat*,場合によっては CvSeq* など,複数の型の配列を受け入れることを意味します.特定の配列型は,実行時にヘッダの最初の 4 バイトを解析することで決定されます.C++ のインターフェースでは,InputArray と OutputArray が CvArr の役割を果たします.

CvBox2D

typedef struct CvBox2D CvBox2D
参照
RotatedRect

CvCmpFunc

typedef int(CV_CDECL * CvCmpFunc) (const void *a, const void *b, void *userdata)

a < b ? -1 : a > b ? 1 : 0

CvLineIterator

行イテレータの状態.

CvMat

typedef struct CvMat CvMat

行列の要素は,行ごとに格納されます.行列の要素 (i, j) (i - 0 ベースの行インデックス, j - 0 ベースの列インデックス) は,マクロ CV_MAT_ELEM を用いて取り出したり変更したりすることができます.

uchar pixval = CV_MAT_ELEM(grayimg, uchar, i, j) CV_MAT_ELEM(cameraMatrix, float, 0, 2) = image.width*0.5f;

複数チャンネルの行列にアクセスするには, CV_MAT_ELEM(matrix, type, i, j*nchannels + channel_idx) を利用します.

非推奨:
CvMatは廃止されました.代わりに Mat の利用を検討してください.

CvMatND

typedef struct CvMatND CvMatND
非推奨:
の使用を検討してください.cv::Mat代わりに

CvNArrayIterator

matrix iterator: 密な配列に対する n-ary 演算に利用されます.

CvRect

typedef struct CvRect CvRect
参照
Rect_

CvScalar

typedef struct CvScalar CvScalar
参照
Scalar_

CvTermCriteria

参照
項基準

IplImage

typedef struct _IplImage IplImage

IplImage は,Intel Image Processing Library からの引用で,そのフォーマットはネイティブです.OpenCV は,上記のパラメータリストに示された IplImage フォーマットのサブセットのみをサポートします.

上記の制限に加えて,OpenCVではROIの扱いが異なります.OpenCV の関数は,すべてのソース画像とデスティネーション画像の画像サイズまたは ROI サイズが正確に一致することを要求します.一方,インテル® 画像処理ライブラリでは,ソース画像とデスティネーション画像の間の交点の領域 (または ROI) を処理し,それらが独立して変化することを許容します.

列挙型詳解

anonymous enum

anonymous enum
参照
cv::エラー::コード
列挙値
CV_StsOk

何も問題ありません.

CV_StsBackTrace

バックトレースの疑似エラー.

CV_StsError

未知のエラー,不特定のエラー

CV_StsInternal

内部エラー(不良状態)

CV_StsNoMem

メモリ不足

CV_StsBadArg

関数の引数/パラメータが不正

CV_StsBadFunc

サポートされていない関数

CV_StsNoConv

反復計算が収束しなかった

CV_StsAutoTrace

トレース

CV_HeaderIsNull

画像のヘッダが NULL

CV_BadImageSize

画像のサイズが不正

CV_BadOffset

オフセットが無効です.

CV_BadStep

画像のステップが間違っています.これは,非連続な行列の場合に起こり得ます.

CV_BadNumChannels

チャンネル数の不正,例えば,いくつかの関数はシングルチャンネルの行列しか受け付けません.

CV_BadDepth

入力画像の深度が,この関数ではサポートされていません.

CV_BadOrder

次元の数が範囲外

CV_BadOrigin

不正な入力原点.

CV_BadAlign

入力のアラインメントが不正

CV_BadCOI

入力COIがサポートされていない

CV_BadROISize

不正なROIの入力

CV_StsNullPtr

NULL ポインタ

CV_StsVecLengthErr

不正なベクトル長

CV_StsFilterStructContentErr

フィルタ構造体の内容が不正

CV_StsKernelStructContentErr

変換カーネルの内容が不正

CV_StsFilterOffsetErr

不正なフィルタオフセット値

CV_StsBadSize

入力/出力構造体のサイズが不正

CV_StsDivByZero

ゼロによる分割

CV_StsInplaceNotSupported

インプレイス操作がサポートされていない

CV_StsObjectNotFound

リクエストが完了しない

CV_StsUnmatchedFormats

入力配列と出力配列のフォーマットが異なる

CV_StsBadFlag

フラグが間違っているか,サポートされていない

CV_StsBadPoint

悪い点CvPoint

CV_StsBadMask

マスクの形式が不正(8uC1でも8sC1でもない)。

CV_StsUnmatchedSizes

入出力構造体のサイズが一致しない

CV_StsUnsupportedFormat

データのフォーマット/タイプが,この関数でサポートされていない

CV_StsOutOfRange

パラメータの一部が範囲外

CV_StsParseError

解析されたファイルの構文/構造が無効。

CV_StsNotImplemented

要求された関数/機能が実装されていない

CV_StsBadMemBlock

割り当てられたブロックが破損している

CV_StsAssert

アサーションに失敗した

CV_GpuNotSupported

CUDA をサポートしていない

CV_GpuApiCallError

GPU API コールエラー

CV_OpenGlNotSupported

OpenGL がサポートされていない

CV_OpenGlApiCallError

OpenGL API の呼び出しエラー

CV_OpenCLApiCallError

OpenCL API 呼び出しエラー

CV_OpenCLInitError

OpenCL の初期化エラー.

関数詳解

CVAPI() [1/25]

CVAPI ( const char * )

コードを指定して,エラーの説明をテキストで取得します.

CVAPI() [2/25]

CVAPI ( void * )

データをコピーすることなく,多次元配列の形状を変更します.

あるオブジェクトのクローンを作成します.

mallocラッパーを使用します。十分なメモリがない場合,この関数は(cvAlloc を呼び出す他の OpenCV 関数と同様に)エラーを発生させます.

この関数は,多次元配列も扱うことができ(通常の画像や行列も扱えますが),次元数を変更できる cvReshape の発展版です.

以下は,cvReshape の説明にある2つのサンプルを cvReshapeMatND を用いて書き直したものです.

IplImage* color_img = cvCreateImage(cvSize(320,240), IPL_DEPTH_8U, 3);
IplImage gray_img_hdr, *gray_img;
gray_img = (IplImage*)cvReshapeMatND(color_img, sizeof(gray_img_hdr), &gray_img_hdr, 1, 0, 0);
...
int size[] = { 2, 2, 2 };
CvMatND* mat = cvCreateMatND(3, size, CV_32F);
CvMat row_header, *row;
row = (CvMat*)cvReshapeMatND(mat, sizeof(row_header), &row_header, 0, 1, 0);
CV_INLINE CvSize cvSize(int width, int height)
Definition: core/types_c.h:1202
Definition: core/types_c.h:328
Definition: core/types_c.h:690

C言語では,この関数のヘッダファイルには,sizeof_header パラメータを使わない便利なマクロ cvReshapeND が含まれています.そのため,例題の cvReshapeMatND の呼び出しを含む行は,以下のように置き換えることができます.

gray_img = (IplImage*)cvReshapeND(color_img, &gray_img_hdr, 1, 0, 0);
...
row = (CvMat*)cvReshapeND(mat, &row_header, 0, 1, 0);
引数
arr 入力配列
sizeof_header IplImage を区別するための,出力ヘッダのサイズ.CvMatおよびCvMatND出力ヘッダ
header 埋められる出力ヘッダ
new_cn 新しいチャンネル数.new_cn = 0 は,チャンネル数が変更されないことを意味します.
new_dims 新しい次元の数 new_dims = 0 は、次元の数が変わらないことを意味する。
new_sizes 新しい次元のサイズの配列。要素の総数は同じでなければならないので、new_dims-1の値のみが使用される。したがって、new_dims = 1 の場合は、 new_sizes 配列は使用されません。

与えられた範囲の数値で行列を埋める

ストレージに,指定されたサイズの連続バッファを割り当てます.

シーケンスの内容を,メモリ上の連続した部分にコピーします.

この関数は,与えられたオブジェクトの型を見つけ,渡されたオブジェクトを用いて clone を呼び出します.もちろん, struct_ptr が CvMat* であるなど,オブジェクトの型が分かっている場合は, cvCloneMat のような特定の関数を呼び出した方が高速です.

引数
struct_ptr 複製されるオブジェクト.

CVAPI() [3/25]

CVAPI ( CvErrorCallback )

新しいエラー処理関数を割り当てます.

CVAPI() [4/25]

CVAPI ( CvGraph * )

新しいグラフを作成します.

グラフのコピーを作成します.

CVAPI() [5/25]

CVAPI ( CvGraphEdge * ) const

2つの頂点を結ぶ辺を見つけます.

CVAPI() [6/25]

CVAPI ( CvGraphScanner * )

新しいグラフスキャナを作成します.

CVAPI() [7/25]

CVAPI ( CvMat * )

行列ヘッダを作成しますが,行列データの割り当ては行いません.

src[i] から dst[i] へのマッピングのための透視変換行列を計算します( i=0,1,2,3 ).

rotation_matrix 行列を計算します.

データをコピーせずに,行列/画像の形状を変更します.

任意の配列に対する行列のヘッダを返します.

配列の対角線のいずれかを返します。

配列の列のうちの 1 つを返します。

配列の行または行間を返します。

RSM関数: 入力画像または行列の,矩形の部分配列に対応する行列ヘッダを返します。

行列のヘッダを作成し,行列データを確保します.

あらかじめ割り当てられた行列ヘッダを初期化します。

この関数は,新しい行列ヘッダを確保し,そのポインタを返します.その後の行列データは, cvCreateData を用いて割り当てたり, cvSetData を用いてユーザが割り当てたデータを明示的にセットしたりすることができます.

引数
rows 行列の行数
cols 行列の列数.
type 行列の要素の種類, cvCreateMat を参照してください.

この関数は,生データを OpenCV の行列関数で処理するためによく利用されます.例えば,以下のコードでは,通常の配列として格納されている 2 つの行列の行列積を計算します.

double a[] = { 1, 2, 3, 4,
5, 6, 7, 8,
9, 10, 11, 12 };
double b[] = { 1, 5, 9,
2, 6, 10,
3, 7, 11,
4, 8, 12 };
double c[9];
CvMat Ma, Mb, Mc ;
cvInitMatHeader(&Ma, 3, 4, CV_64FC1, a);
cvInitMatHeader(&Mb, 4, 3, CV_64FC1, b);
cvInitMatHeader(&Mc, 3, 3, CV_64FC1, c);
cvMatMulAdd(&Ma, &Mb, 0, &Mc);
// the c array now contains the product of a (3x4) and b (4x3)
#define cvMatMulAdd(src1, src2, src3, dst)
Definition: core_c.h:1283
引数
mat 初期化される行列ヘッダへのポインタ.
rows 行列の行数
cols 行列の列数.
type 行列の要素の種類, cvCreateMat を参照してください.
data オプション:行列のヘッダに割り当てられるデータポインタ.
step オプション:割り当てられたデータの行の幅(バイト).デフォルトでは,行列の後続の行の間に隙間がないことを仮定した,可能な限り小さいステップが利用されます.

この関数の呼び出しは,以下のコードに相当します.

CvMat* mat = cvCreateMatHeader(rows, cols, type);
cvCreateData(mat);
引数
rows 行列の行数
cols 行列の列数.
type CV_<ビット深度><S|U|F>C<チャンネル数> の形式で表される行列要素の型,ここで S=signed, U=unsigned, F=float. 例えば,CV _ 8UC1 は,要素が8ビット符号なしで1つのチャンネルを持つことを意味し,CV _ 32SC2 は,要素が32ビット符号ありで2つのチャンネルを持つことを意味します.

入力行列の正確なコピーを作成します(ただし,ステップ値を除く).

この関数は,入力配列の指定された矩形領域に対応するヘッダを返します.言い換えると

言い換えれば,ユーザが入力配列の矩形部分を独立した配列として扱うことを可能にします.この関数では,ROI が考慮されており,実際に ROI の部分配列が抽出されます.

引数
arr 入力配列
submat 結果として得られる部分配列のヘッダへのポインタ
rect 注目する矩形領域のゼロベースの座標

この関数は,入力配列の指定された行/行範囲に対応するヘッダを返します. cvGetRow(arr, submat, row) は, cvGetRows(arr, submat, row, row+1) のショートカットです.

引数
arr 入力配列
submat 結果として得られる部分配列のヘッダへのポインタ.
start_row スパンの開始行(含む)を表す,ゼロベースのインデックス.
end_row 範囲の最後の行を表す,0ベースのインデックス(排他的).
delta_row 行スパンのインデックスステップ。つまり,この関数は, start_row から end_row まで(ただし,これを含まない)の delta_row - 番目の行をすべて抽出します.

この関数は,入力配列の指定された列スパンに対応するヘッダを返します.つまり

つまり,データはコピーされません。したがって,部分行列を変更しても,元の配列に影響を与えます.列をコピーする必要がある場合は, cvCloneMat を利用してください. cvGetCol(arr, submat, col) は, cvGetCols(arr, submat, col, col+1) のショートカットです.

引数
arr 入力配列
submat 結果として得られる部分配列のヘッダへのポインタ.
start_col スパンの始点となる列(含む)の,ゼロベースのインデックス.
end_col スパンの終了列(排他的)を表す,ゼロベースのインデックス.

この関数は,入力配列の指定された対角線に対応するヘッダを返します.

引数
arr 入力配列
submat 結果として得られる部分配列のヘッダへのポインタ.
diag 配列の対角線のインデックス。0 は主対角線,-1 は主対角線の上の対角線,1 は主対角線の下の対角線,というように対応します。

この関数は,入力配列に対する行列ヘッダを返します.CvMatや,画像 - IplImage,あるいは多次元の密な配列 -CvMatND(です(3番目のオプションは, allowND != 0 の場合にのみ許されます).matrix の場合,この関数は単に入力ポインタを返します.IplImage* やCvMatNDの場合,この関数は,現在の画像ROIのパラメータでヘッダ構造体を初期化し, &header を返します.では COI がサポートされていないのでCvMatでは COI がサポートされていないので,それは別途返されます.

この関数は,IplImage* と IplImage* の両方の配列を,同じコードで簡単に扱うことができます.CvMatの2種類の配列を,同じコードで簡単に扱う方法を提供します.入力配列は,非0のデータポインタを持たなければならず,そうでない場合はエラーになります.

覚え書き
入力配列が,平面データレイアウトの IplImage で COI が設定されている場合,この関数は選択された平面へのポインタと COI == 0 を返します. この機能により,OpenCV がサポートしていない平面データレイアウトの IplImage 構造体を処理することができます.
引数
arr 入力配列
header へのポインタはCvMat一時的なバッファとして利用される構造体へのポインタ.
coi COIを保存するための,オプションの出力パラメータ.
allowND 0ではない場合,この関数は多次元の密な配列(CvMatND*)を受け入れ,2次元の行列(2次元の場合),あるいは1次元の行列を返します.CvMatND2次元の場合),あるいは1次元の場合(1次元,あるいは2次元以上の場合)には,2次元の行列を返します.CvMatNDが1次元または2次元以上の場合)を返します.配列は,連続していなければいけません.CvMatND配列は連続していなければいけません.
参照
cvGetImage, cvarrToMat.

この関数は,ヘッダを初期化します.CvMatこの関数は,ヘッダを初期化し,元の配列と同じデータを指しますが,チャンネル数や行数,あるいはその両方が異なる形状になるようにします.

次のコード例では,1 つの画像バッファと 2 つの画像ヘッダを作成しています.1 つ目は 320x240x3 の画像用,2 つ目は 960x240x1 の画像用です.

IplImage* color_img = cvCreateImage(cvSize(320,240), IPL_DEPTH_8U, 3);
CvMat gray_mat_hdr;
IplImage gray_img_hdr, *gray_img;
cvReshape(color_img, &gray_mat_hdr, 1);
gray_img = cvGetImage(&gray_mat_hdr, &gray_img_hdr);

また、次の例では、3x3の行列を1x9の単一ベクトルに変換しています。

CvMat* mat = cvCreateMat(3, 3, CV_32F);
CvMat row_header, *row;
row = cvReshape(mat, &row_header, 0, 1);
引数
arr 入力配列
header 埋められる出力ヘッダ
new_cn 新しいチャンネル数です。new_cn = 0」は、チャンネル数が変更されないことを意味します。
new_rows 新しい行の数。new_rows = 0」は、new_cn の値に応じて変更する必要がない限り、行数が変更されないことを意味します。
参照
cv::getRotationMatrix2D
cv::getPerspectiveTransform

CVAPI() [8/25]

CVAPI ( CvMatND * )

新しい行列ヘッダを作成しますが,行列データの割り当ては行いません.

あらかじめ割り当てられた多次元配列のヘッダを初期化します.

多次元の密な配列のヘッダを作成し,データを割り当てます。

この関数は,多次元密な配列のヘッダを割り当てます.配列のデータは, cvCreateData を用いて割り当てることも, cvSetData を用いてユーザが割り当てたデータを明示的にセットすることもできます.

引数
dims 配列の次元数
sizes 配列の次元数
type 配列の要素の種類, cvCreateMat を参照してください.

この関数の呼び出しは,以下のコードに相当します.

CvMatND* mat = cvCreateMatNDHeader(dims, sizes, type);
cvCreateData(mat);
引数
dims 配列の次元数.これは, CV_MAX_DIM (デフォルトでは 32 ですが,ビルド時に変更可能です)を超えてはいけません.
sizes 各次元のサイズを表す配列.
type 配列の要素の種類, cvCreateMat を参照してください.
mat 初期化される配列ヘッダへのポインタ.
dims 配列の次元数.
sizes 各次元のサイズを表す配列.
type 配列の要素の種類, cvCreateMat を参照してください.
data オプションで,行列のヘッダに割り当てられるデータポインタ.

のコピーを作成します.CvMatND(のコピーを作成します(ただし,ステップを除く).

CVAPI() [9/25]

CVAPI ( CvMemStorage * )

新しいメモリストレージを作成します. block_size == 0 は,デフォルトの,ある程度最適なサイズが使われることを意味します(現在は 64K です).

親ストレージからメモリブロックを借用するメモリストレージを作成します.

CVAPI() [10/25]

CVAPI ( CvRect ) const

画像の ROI を返します.

与えられた2つの矩形を含む最小の矩形を見つけます.

ROI が設定されていない場合は, cvRect(0,0,image->width,image->height) が返されます.

引数
image 画像ヘッダへのポインタ.

CVAPI() [11/25]

CVAPI ( CvScalar ) const

特定の配列要素を返します.

この関数は,指定された配列要素を返します.疎な配列の場合,要求されたノードが存在しなければ,関数は 0 を返します(この関数によって新しいノードが作成されることはありません).

引数
arr 入力配列
idx0 要素のインデックスの最初のゼロベースの成分

これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。

これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。

引数
arr 入力配列
idx 要素を表すインデックスの配列.

行列のトレース(主対角線上の要素の和)を求めます.

配列要素の和を求めます.

配列要素の平均値を求めます.

CVAPI() [12/25]

CVAPI ( CvSeq * )

輪郭スキャナを解放し,最初の外郭へのポインタを返します.

画像中の円を見つける

いくつかの方法のうちの1つを使って,2値画像上の線を見つけます.

点の行列(列または行のベクトル)に対するシーケンスヘッダを初期化する

輪郭の凸状欠損を見つける

2次元点集合の正確な凸包を計算する

単一の多角形曲線(輪郭)または多角形曲線(輪郭)の木を近似する

フリーマンチェーンを多角形曲線で近似する

メモリストレージへの文字列の割り当て 指定されたストレージに常駐する新しい空のシーケンスを作成する

シーケンスライタを閉じ,シーケンスヘッダを更新し,結果として得られるシーケンスへのポインタを返します(これは,シーケンスが cvStartWriteSeq) を用いて作成されたものである場合に役立ちます).

配列に対するシーケンスヘッダを作成します.これ以降は,内容を変更しないシーケンスに対するすべての操作が,結果としてのシーケンスに適用されます.

シーケンススライスを抽出します(シーケンス要素をコピーしてもしなくても構いません).

からアクセスできる,すべてのシーケンスへのポインタを収集します.first単一のシーケンスへのポインタ

参照
cvFindContours

これは,独立した輪郭近似ルーチンであり,新しいインタフェースでは表現されません.cvFindContours が Freeman チェーンとして輪郭を取得した場合,この関数を呼び出して,多角形で表現された近似輪郭を取得します.

引数
src_seq 他のチェーンを参照できる,近似的なフリーマンチェーンへのポインタ.
storage 結果として得られるポリラインの格納場所。
method 近似手法(関数 :ocvFindContours の説明を参照してください).
parameter メソッドのパラメータ(現在は使用されていません).
minimal_perimeter 周囲の長さが minimal_perimeter 以上の輪郭のみを近似します.その他の鎖は,結果として得られる構造体から削除されます.
recursive 再帰フラグ.これが0ではない場合,この関数は, chain から h_next または v_next リンクを利用して得られるすべてのチェーンを近似します.そうでない場合は,1つの入力チェーンを近似します.
参照
cvStartReadChainPoints, cvReadChainPoint
cv::approxPolyDP
cv::convexHull
cv::convexityDefects

cvMakeSeqHeaderForArray のラッパー(これは, bounding rectangle を初期化しません!!!).

line_storage は,メモリストレージまたは 1 x最大行数 CvMatmethod は CV_HOUGH_* のうちの1つで,rho, theta, threshold がそれぞれの方法で利用されます. param1 ~ line length, param2 ~ line gap - 確率的な場合,param1 ~ srn, param2 ~ stn - マルチスケールの場合.

参照
cv::HoughLines
cv::HoughCircles

CVAPI() [13/25]

CVAPI ( CvSet * )

新しい集合を作成します.

CVAPI() [14/25]

CVAPI ( CvSize ) const

行列あるいは画像ROIのサイズを返します.

この関数は,入力行列または画像の行数(CvSize::height)と列数(CvSize::width)を返します.また,画像の場合は,ROIのサイズが返されます.

引数
arr 配列のヘッダ

CVAPI() [15/25]

CVAPI ( CvSparseMat * )

疎な配列を作成します.

この関数は,多次元の疎な配列を確保します.つまり,PtrND やその他の関連関数は,各インデックスに対して 0 を返します.

引数
dims 配列の次元数.密な行列とは対照的に,配列の次元数は実質的に無制限です(最大で 1,000 まで).$2^{16}$).
sizes 配列の次元数
type 配列の要素の種類。の場合と同じです。CvMat

のコピーを作成します.CvSparseMat(ただし,0 個の場合もあります)。

CVAPI() [16/25]

CVAPI ( CvSparseNode * ) const

疎な配列要素のイテレータを初期化します.

この関数は,疎な配列要素のイテレータを初期化し,最初の要素へのポインタを返します.また,配列が空の場合は NULL を返します.

引数
mat 入力配列
mat_iterator 初期化されたイテレータ

CVAPI() [17/25]

CVAPI ( CvTermCriteria )

終了条件の有効性をチェックし, eps には default_eps (設定されていない場合)を, max_iter には default_max_iters (設定されていない場合)をセットします.

CVAPI() [18/25]

CVAPI ( double ) const

シングルチャンネルの 1D, 2D, 3D または nD 配列の,指定された要素を返します.

グレースケール画像に対して,固定レベルの閾値を適用します.

点が多角形の内側にあるか,外側にあるか,端にあるか(頂点にあるか)をチェックします.

2つの輪郭のモーメントを一致させて比較する機能

輪郭または輪郭セグメントの面積を計算する

輪郭の周囲、または輪郭の一部の長さを計算する

正規化された中心モーメントを取得する

中心モーメントを取得する

2つの配列のユークリッド基準のドットプロダクトを計算します。

シングルチャンネル配列の指定された要素を返します。配列が複数のチャンネルを持つ場合は、ランタイムエラーが発生します。なお, Get?D 関数は,シングルチャンネル配列とマルチチャンネル配列の両方に対して安全に利用できますが,処理速度は若干遅くなります.

疎な配列の場合,要求されたノードが存在しなければ,この関数は 0 を返します(この関数によって新しいノードが生成されることはありません).

引数
arr 入力配列.1つのチャンネルでなければいけません。
idx0 要素のインデックスの最初のゼロベースの成分

これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。

これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。

引数
arr 入力配列.1つのチャンネルでなければいけません。
idx 要素を表すインデックスの配列.

この関数は,2つの配列のユークリッド内積を計算して返します.

\[src1 \bullet src2 = \sum _I ( \texttt{src1} (I) \texttt{src2} (I))\]

複数のチャンネルを持つ配列の場合は,すべてのチャンネルの結果が累積されます.具体的には, cvDotProduct(a,a) (a は複素数のベクトル)は,次のように返されます$||\texttt{a}||^2$. この関数は,多次元配列を行ごと,層ごとなどに処理することができます.

引数
src1 最初の入力配列
src2 2 番目の入力配列

行列を反転させます.

入力行列の行列式を求めます.

マハラノビス(加重)距離を求めます.

配列(あるいは,2 つの配列)のノルム,差動ノルム,相対差動ノルムを求めます.

参照
ref core_c_NormFlags "flags"
cv::arcLength
cv::contourArea
cv::matchShapes

それぞれ、正、負、ゼロを返す。オプションで、点と最も近いポリゴンエッジとの符号付き距離を測定します (measure_dist=1)

参照
cv::pointPolygonTest

2つのヒストグラムを比較する

これは,輪郭を取得する前に行われる基本的な操作です.

参照
cv::threshold

CVAPI() [19/25]

CVAPI ( float )

高速アークタンジェント計算

立方根の高速計算

CVAPI() [20/25]

CVAPI ( int ) const

注目しているチャンネルのインデックスを返す

フレームをビデオファイルに書き込む

キャプチャラーの種類を返す(例: ::CV_CAP_VFW, ::CV_CAP_UNICAP).

キャプチャーのプロパティを設定します.

与えられた楕円を構成するポリゴンポイントを返します.

線分のイテレータを初期化します.

*pt1 と *pt2 を結ぶ線分を,矩形の窓で切り取ります.

輪郭が凸かどうかをチェックします(凸なら1、非凸なら0を返します)。

点の集合を囲む最小の円を検索します。

黒色(0)の背景に白色(0ではない)の連結成分がある場合,その外側と内側の境界を取得する(オプション)。

指定された次元の配列サイズを返します。

配列の次元数を返します。

配列の要素の型を返します。

IplImage に含まれる注目チャンネルを返します。返される値は, cvSetImageCOI の coi に対応します.

引数
image 画像ヘッダへのポインタ.

複数の配列を同時に走査するイテレータを初期化します(この関数は, cvNextArraySlice と共に N-ari 要素単位の演算に利用されます).

反復処理が終了した場合は0を返し,そうでない場合は0以外の値(スライス長)を返します.

この関数は,配列の要素の型を返します.IplImage の場合,その型は CvMat のような表現に変換されます.例えば,画像が以下のように作成されている場合,その型は CvMat のような表現に変換されます.

IplImage* img = cvCreateImage(cvSize(640, 480), IPL_DEPTH_8U, 3);

コード cvGetElemType(img) は, CV_8UC3 を返します.

引数
arr 入力配列

この関数は,配列の次元数と,次元数の配列を返します.IplImage やCvMatの場合は,画像や行列の行数に関わらず,常に 2 を返します.例えば,以下のコードは,配列の総要素数を計算します.

int sizes[CV_MAX_DIM];
int i, total = 1;
int dims = cvGetDims(arr, size);
for(i = 0; i < dims; i++ )
total *= sizes[i];
引数
arr 入力配列
sizes 配列の各次元のサイズを表す,オプションの出力ベクトル.2 次元配列の場合,行数(高さ)が最初に,列数(幅)が次になります.
arr 入力配列
index ゼロベースの次元インデックス(行列の場合,0 は行数,1 は列数,画像の場合,0 は高さ,1 は幅を意味します).

配列の値に NaN や Inf が含まれていないか,あるいは( CV_CHECK_RANGE が設定されている場合)単に数値が大きすぎないかをチェックします.CV_CHECK_QUIET がセットされている場合,ランタイムエラーは発生しません(「悪い」値の場合は,0を返します).そうでない場合は, cvError が呼ばれます.

三次方程式の実根を求める

連立方程式 (src1)*(dst) = (src2) を解きます( src1 が特異点であり, CV_LU メソッドが用いられる場合は 0 を返します).

0ではないピクセルの数を計算します

最適な DFT ベクトルサイズ >= size0 を見つけます.

シーケンススライスの長さを求めます(負のインデックスをサポートします).

指定されたシーケンス要素のインデックスを求めます.要素がシーケンスに属していない場合は -1 を返します。

現在のシーケンスリーダーの位置(現在観測されているシーケンス要素)を返します。

指定された基準を使って,シーケンスを1つ以上の同等クラスに分割する

新しい要素をセットに追加し,そのポインタを返す

グラフに新しい頂点を追加する

頂点をグラフから削除し,それに付随するすべての辺を削除する

添字またはポインタで指定された2つの頂点が接続されていない場合に,それらの頂点を接続する既存の辺へのポインタを返します.関数は,新しい辺が作成された場合は1を,そうでない場合は0を返します.

頂点に付随する辺の数を数える

次のグラフ要素を取得

IPPやMKLなどから最適化された関数をロードしたり,純粋なCコードに戻したりします.

OpenMP実装で使用されるスレッド数の取得/設定

実行中のスレッドのインデックスを取得

現在のOpenCVのエラー状態を取得

現在のエラー処理モードの取得

エラー処理モードを設定し,前回使用したモードを返す

最後に発生したエラーに関する詳細情報の取得

IPPのエラーコードを,OpenCVの対応するコードにマッピングします.

何も出力しない

コンソールに出力(fprintf(stderr,...))

MessageBox(WIN32) に出力します.

参照
cv::findContours, cvStartFindContours, cvFindNextContour, cvSubstituteContour, cvEndFindContours
cv::minEnclosingCircle
cv::isContourConvex

(0<=x<img_size.width, 0<=y<img_size.height).

参照
cv::clipLine

初期状態では, line_iterator->ptr は,画像中の pt1(または pt2,left_to_right の説明を参照してください)の位置を指します.終点から終点までの直線上のピクセル数を返します。

参照
cv::LineIterator

楕円は,「軸」の大きさの箱を「中心」を中心に「角度」だけ回転させたものです.arc_start と arc_end にそれぞれ 0 と 360 以外の値を指定することで、楕円の円弧の部分的な掃引を行うことができます。入力配列 'pts' は、結果を格納できるだけの大きさが必要です。pts' に格納されたポイントの総数がこの関数によって返される。

参照
cv::ellipse2Poly

これは, ::CV_CAP_ANY で作成された場合は不明です.

CVAPI() [21/25]

CVAPI ( int64 )

RNGの初期化と正確な時間計測のためのヘルパー関数:x86では,内部クロックカウンタを利用します.

CVAPI() [22/25]

CVAPI ( IplImage * )

画像ヘッダを作成しますが,画像データの割り当ては行いません.

cvGrabFrame と cvRetrieveFrame の組み合わせに過ぎません.

任意の配列に対する画像ヘッダを返します.

画像ヘッダを作成し,画像データを確保します.

事前に確保された画像ヘッダを初期化します.

引数
size 画像の幅と高さ
depth 画像の深度( cvCreateImage を参照してください).
channels チャンネル数( cvCreateImage を参照してください).

戻り値の IplImage* は,初期化されたヘッダを指します.

引数
image 初期化される画像ヘッダ
size 画像の幅と高さ
depth 画像の深度( cvCreateImage を参照してください).
channels チャンネル数( cvCreateImage を参照してください).
origin 左上の IPL_ORIGIN_TL または,左下の IPL_ORIGIN_BL.
align 画像行のアライメント,通常は4バイトまたは8バイト

この関数の呼び出しは,以下のコードに相当します.

header = cvCreateImageHeader(size, depth, channels);
cvCreateData(header);
引数
size 画像の幅と高さ
depth 画像要素のビット深度.有効なビット深度については,IplImageを参照してください。
channels ピクセルあたりのチャンネル数.詳細は,IplImageを参照してください.この関数は,インターリーブされたチャンネルを持つ画像のみを作成します。

IPL画像のコピーを作成します(widthStepは異なる場合があります).

この関数は,入力配列の画像ヘッダを返します.この画像ヘッダは,行列(CvMat) または画像 (IPLImage) です.画像の場合,この関数は単に入力ポインタを返します.IplImage の場合はCvMatの場合は, image_header 構造体を入力行列のパラメータで初期化します.IplImage を次のように変換することに注意してくださいCvMatに変換し,次にCvMatIplImage を cvGetMat を用いて変換した後,この関数を用いて IplImage に戻すと,元の画像に ROI が設定されている場合には,異なるヘッダが得られることに注意してください.

引数
arr 入力配列
image_header 一時的なバッファとして利用される IplImage 構造体へのポインタ.
警告
!!!取得したフレームを解放したり変更したりしないでください!!!

CVAPI() [23/25]

CVAPI ( schar * )

シーケンスの最後に新しい要素を追加します。要素へのポインタを返します。

新しい要素をシーケンスの先頭に追加します。要素へのポインタを返します。

シーケンスの途中に新しい要素を挿入します. cvSeqInsert(seq,0,elem) == cvSeqPushFront(seq,elem)

指定されたシーケンス要素へのポインタを取得します.負のインデックスがサポートされており,これは最後から数えた場合を意味します(例えば,-1 はシーケンスの最後の要素を意味します).

ソートされた] シーケンスの要素を検索します。

CVAPI() [24/25]

CVAPI ( uchar * ) const

特定の配列要素へのポインタを返します。

この関数は,特定の配列要素へのポインタを返します.配列の次元数は,この関数に渡されるインデックスの数と一致しなければいけません.ただし,関数 cvPtr1D は,1次元,2次元,n次元の密な配列へのシーケンシャルアクセスに利用できます.

この関数は,疎な配列にも利用できます.要求されたノードが存在しない場合は,ノードを作成してそれを 0 にします.

これらの関数や,配列の要素にアクセスする他の関数( cvGetND , cvGetRealND , cvSet , cvSetND , cvSetRealND )は,要素のインデックスが範囲外である場合にエラーになります.

引数
arr 入力配列
idx0 要素のインデックスの最初のゼロベースの成分
type オプションの出力パラメータ:行列の要素の種類.

これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。

これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。

引数
arr 入力配列
idx 要素を表すインデックスの配列.
type オプションの出力パラメータ:行列の要素の種類.
create_node 疎な行列に対するオプションの入力パラメータ.このパラメータの値が0ではない場合,要求された要素がまだ存在していない場合に,その要素が作成されます.
precalc_hashval 疎な行列のオプション入力パラメータ.このポインタがNULLではない場合,この関数はノードのハッシュ値を再計算せずに,指定された場所から取得します.これは,ペアワイズ処理を高速化するのに役立ちます(TODO: 例を示します).

CVAPI() [25/25]

CVAPI ( void )

画像ヘッダを解放します。

キャプチャ/読み込みの停止とリソースの解放

ビデオファイルライターを閉じる

輪郭線や塗りつぶした内部を画像上に描画する

テキストストロークのバウンディングボックスを計算する(位置合わせに便利)

指定された位置に,指定されたフォントと色のテキストストロークを描画します.CvFontcvInitFont で初期化されなければいけません.

フォント構造を初期化します(OpenCV 1.x API).

1つあるいは複数の多角形の曲線を描画します.

1つまたは複数の任意の多角形で囲まれた領域を塗りつぶします.

凸状または単調な多角形を埋めます.

楕円のアウトライン、塗りつぶし楕円、楕円弧、塗りつぶし楕円セクタの描画

中心と半径を指定して円を描画する機能

引数で指定された矩形を描画します。CvRect構造体

矩形の対向する2つの角(pt1 & pt2)を指定して矩形を描画します。

2 つの点を結ぶ 4 連結、8 連結、またはアンチエイリアスされた線分を描画する

線分を2次元または3次元の点の集合にロバストにフィットさせる(M-estimator technique)。

選択された領域内で,追跡しやすそうな点の疎なセットを見つける

ある種の勾配検索を用いて,コーナーの位置を調整する

ハリス・コーナー検出器。

すべての画像ピクセルにおいて,2x2 勾配共分散行列の最小固有値を計算する

各画像ピクセルにおいて,2x2 勾配共役行列の固有値とベクトルを計算します.

コーナー検出のための制約画像を計算します.

カニーエッジ検出器の実行

色差が十分に大きくなるまで,連結成分を埋めていく

グレースケール画像に適応型閾値を適用する

2値画像に距離変換を適用する

8ビットシングルチャンネル画像のヒストグラムを等化する

あるヒストグラムを別のヒストグラムで割る

ヒストグラムを比較して,画像内のテンプレートを特定する

バックプロジェクトを計算する

配列のヒストグラムを計算する

ベイジアン確率的ヒストグラムを計算します(src と dst はそれぞれ,次のような配列です).ヒストグラム

ヒストグラムをコピーします.

ヒストグラムをしきい値化します.

ヒストグラムを正規化します.

ヒストグラムの最小ビンと最大ビンを求めます。

ヒストグラムをクリアする。

ヒストグラムを解除する。

ヒストグラムのビンの境界線を設定します。

ボックスの頂点の座標を求めます.

フリーマンチェーンリーダーを初期化します.

最後に取得した輪郭を,新しい輪郭に置き換えます.

テンプレートとソース画像のオーバーラップしたウィンドウとの類似性を測定し,その測定値を結果画像に反映させます.

入力配列から四角形を取り出します.

入力配列から,指定された中心を持つ矩形の画像領域を検索します.

事前に計算された空間モーメントと中心モーメントから7つのHuの不変量を計算します。

3次までのすべての空間・中心モーメントを計算する

複雑なモルフォロジー変換を行う

入力画像を1回または複数回拡張する(最大フィルタをかける

入力画像を1回または複数回,消去します(最小フィルタを適用).element pointerがNULLの場合,3x3の長方形の要素が使用される

構造化要素を解放する

log-polar 画像の順変換または逆変換を行う

cvRemap 用に,mapx と mapy を浮動小数点型から整数型に変換します.

指定された座標マップを用いて,汎用的な幾何学変換を行います.

遠近法(射影法)で画像を変換する

アフィン変換を用いて画像を変換します.

画像をリサイズします(入力配列を出力配列に合わせてリサイズします).

入力配列のピクセルを,ある色空間から別の色空間に変換する

画像のラプラシアンを計算します。(d2/dx + d2/dy)I

一般化されたSobelを用いて,画像の微分を計算する

種となるマーカーを使って画像を分割

平均値シフトアルゴリズムによる画像のフィルタリング

ピラミッドをリリース

画像をアップサンプリングし、その結果をガウスカーネルで平滑化します。

入力画像をガウシアンカーネルで平滑化した後、ダウンサンプリングを行う

積分画像を求める。SUM(X,Y) = sum(x<X,y<Y)I(x,y)

画像をカーネルで畳み込みます.

画像をいくつかの方法で平滑化します。

画像を重みをつけてアキュムレータに追加します: acc = acc*(1-alpha) + image*alpha

2つの画像の積をアキュムレータに加える

二乗画像をアキュムレータに追加します。

オブジェクトを解放します.

OpenCVが,IplImageとIplROI構造体を確保するために,IPL関数を利用するようにします.

2つの3次元ベクトルの外積を計算します.

配列を乱数で埋め,RNG の状態を更新します.

オプションの線形変換により,ある配列を別の配列に変換します.

配列をクリアします。

配列の各要素を指定した値に設定します。

ある配列を別の配列にコピーします。

配列に関する低レベルの情報を取得します。

配列のヘッダにユーザデータを割り当てます。

配列データを解放します。

配列データを割り当てます。

特定の配列要素を変更します。

特定の配列要素を変更します。

疎な配列を削除します。

行列を解放します。

画像全体を含むように画像の ROI をリセットし,ROI 構造体を解放します.

ROI 構造体を解除します。

IplImageの注目チャンネルを設定します.

イメージ・ヘッダとイメージ・データを解放します.

freeラッパーを使用します.ここに限らず,すべてのメモリ解放関数(すべて cvFree を呼び出します)は,データを解放した後にそのデータへのポインタをクリアするために,ダブルポインタを受け取ります.ポインタを NULL ポインタに渡しても構いませんが,この場合は何も起こりません.

この呼び出しは, .NET の類似物です.

if(image )
{
iplDeallocate(*image, IPL_IMAGE_HEADER | IPL_IMAGE_ROI);
*image = 0;
}

のアナログですが,デフォルトではIPL関数を利用しません(マクロ CV_TURN_ON_IPL_COMPATIBILITY を参照してください).

引数
image 画像ヘッダへのダブルポインタ

この呼び出しは, .の短縮形です.

if(*image )
{
cvReleaseData(*image);
cvReleaseImageHeader(image);
}
引数
image 画像ヘッダへのダブルポインタ

ROI が NULL に設定されており,coi がはあまり成功しません。0の場合,ROIが確保されます.ほとんどの OpenCV の関数は COI の設定をサポートしません* ので,個々の画像/行列のチャンネルを処理する場合は,( cvCopy や cvSplit によって)チャンネルを別の画像/行列にコピーして処理し,必要ならばその結果を( cvCopy や cvMerge によって)再びコピーします.

引数
image 画像ヘッダへのポインタ.
coi 対象となるチャンネル.0 - すべてのチャンネルが選択される,1 - 最初のチャンネルが選択される,など.チャンネルのインデックスは,1ベースになることに注意してください.

元の画像の ROI が NULL で,rect が画像全体ではない場合,ROI 構造体が割り当てられます.

ほとんどの OpenCV の関数は ROI の利用をサポートしており,画像の矩形領域を別の画像として扱います.例えば,すべてのピクセル座標は,元の画像ではなく ROI の左上(または左下)からカウントされます.

引数
image 画像ヘッダへのポインタ.
rect ROIの矩形領域

これは,以下と同様の結果をもたらしますが,加えて ROI 構造体を解放します. :

cvSetImageROI(image, cvRect(0, 0, image->width, image->height ));
cvSetImageCOI(image, 0);
CV_INLINE CvRect cvRect(int x, int y, int width, int height)
Definition: core/types_c.h:878
引数
image 画像ヘッダへのポインタ.

この関数は,行列データ参照カウンタをデクリメントし,行列ヘッダを解放します.データ参照カウンタが 0 の場合は,データの割り当ても解除されます.

if(*mat )
cvDecRefData(*mat);
cvFree((void**)mat);
CV_INLINE void cvDecRefData(CvArr *arr)
Decrements an array data reference counter.
Definition: core_c.h:298
引数
mat 行列へのダブルポインタ.

低レベルなスカラ <-> 生データ変換関数

この関数は,終了時に,疎な配列を解放し,配列ポインタをクリアします.

引数
mat 配列へのダブルポインタ。

この関数は,新しい値を特定の配列要素に割り当てます.疎な配列の場合,まだノードが存在していなければ,この関数がノードを生成します.

引数
arr 入力配列
idx0 要素のインデックスの最初のゼロベースの成分
value 割り当てられた値

これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。

これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。

引数
arr 入力配列
idx 要素を表すインデックスの配列.
value 割り当てられた値

この関数は,シングルチャンネル配列の特定の要素に新しい値を割り当てます.配列がマルチチャンネルの場合は,ランタイムエラーが発生します.なお,Set*D 関数は,シングルチャンネル配列とマルチチャンネル配列のどちらに対しても安全に使えますが,多少速度が遅くなります.

疎な配列の場合,まだノードが存在していなければ,この関数がノードを生成します.

引数
arr 入力配列
idx0 要素のインデックスの最初のゼロベースの成分
value 割り当てられた値

疎な配列の場合は,指定されたノードが削除され,ND の密な配列の要素がクリアされます.

2次元の入力配列を,水平方向と垂直方向に複数回繰り返して,出力配列を埋めます.

この関数は,画像,行列,または多次元の密な配列データを確保します.行列型の場合は,OpenCV の割り当て関数が利用されることに注意してください.IplImage の場合は,事前に CV_TURN_ON_IPL_COMPATIBILITY() が呼ばれていなければ,IPL の関数が利用されます.後者の場合,データの割り当てにはIPLの関数が利用されます.

引数
arr 配列のヘッダ

この関数は,配列データを解放します.の場合は,単にCvMatまたはCvMatNDの場合は,単にcvDecRefData()を呼び出すだけです.つまり,この関数は外部データを解放することはできません.cvCreateData の注意事項も参照してください.

引数
arr 配列のヘッダ

この関数は,ユーザデータを配列のヘッダに割り当てます.cvCreateMatHeader, cvCreateImageHeader, cvCreateMatNDHeader, cvInitMatHeader, cvInitImageHeader, cvInitMatNDHeader を利用する前に,ヘッダを初期化する必要があります.

引数
arr 配列のヘッダ
data ユーザデータ
step 行の長さ(バイト).

この関数は,出力変数に配列データに関する低レベルの情報を書き込みます.すべての出力

すべての出力パラメータはオプションであり,ポインタの一部は NULL に設定されます.配列が ROI を設定した IplImage である場合,ROI のパラメータが返されます.

以下の例では,配列の要素にアクセスする方法を示しています.配列の要素の絶対値を計算します.

float* data;
int step;
CvSize size;
cvGetRawData(array, (uchar**)&data, &step, &size);
step /= sizeof(data[0]);
for(int y = 0; y < size.height; y++, data += step )
for(int x = 0; x < size.width; x++ )
data[x] = (float)fabs(data[x]);
Definition: core/types_c.h:1174
引数
arr 配列のヘッダ
data イメージ全体の原点へのポインタ,または ROI が設定されている場合は ROI 原点へのポインタを出力します.
step 出力 全行の長さ(バイト単位
roi_size 出力される ROI サイズ

この関数は,入力配列から選択された要素を出力配列にコピーします.

\[\texttt{dst} (I)= \texttt{src} (I) \quad \text{if} \quad \texttt{mask} (I) \ne 0.\]

渡された配列のいずれかが IplImage 型であれば,その ROI と COI フィールドが利用されます.両配列は,同じ型,同じ次元数,同じサイズでなければいけません.この関数は,疎な配列をコピーすることもできます(この場合,マスクはサポートされません).

引数
src コピー元の配列
dst コピー先の配列
mask 8ビットシングルチャンネル配列のオペレーションマスク:変更される出力配列の要素を指定します。

この関数は,スカラ値をコピー先配列の選択された各要素にコピーします.

\[\texttt{arr} (I)= \texttt{value} \quad \text{if} \quad \texttt{mask} (I) \ne 0\]

配列 arr が IplImage 型である場合,ROI が利用されますが,COI は設定してはいけません.

引数
arr コピー先の配列
value 値を埋める
mask 8ビットシングルチャンネル配列のオペレーションマスク:変更される出力配列の要素を指定します。

この関数は,配列をクリアします.配列が密な場合 (CvMat,CvMatNDまたは IplImage) の場合, cvZero(array) は cvSet(array,cvscalarAll(0),0) と等価です.疎な配列の場合は,すべての要素が削除されます.

引数
arr クリアされる配列

マルチチャンネル配列を,シングルチャンネル配列の集合に分割したり,特定の [color] プレーンを抽出したりします.

シングルチャンネル配列の集合を,1 つのマルチチャンネル配列にマージしたり,特定の [color] プレーンを配列に挿入したりします.

入力配列の複数のチャンネルを,出力配列の特定のチャンネルにコピーします.

この関数は,いくつかの異なる目的を持っており,そのためにいくつかの異なる名前があります.この関数は,ある配列を別の配列にコピーします.オプションでスケーリングが最初に行われたり,オプションで型変換が後に行われたりします.

\[\texttt{dst} (I) = \texttt{scale} \texttt{src} (I) + ( \texttt{shift} _0, \texttt{shift} _1,...)\]

マルチチャンネル配列のすべてのチャンネルは,独立して処理されます.

変換の種類は,丸めと飽和で行われます.つまり,スケーリング+変換の結果が,出力配列の要素の型の値で正確に表現できない場合,実軸上で最も近い表現可能な値に設定されます.

引数
src 変換元配列
dst 出力配列
scale スケールファクター
shift スケーリングされたソース配列要素に加えられた値

すべての入力配列要素に対して線形変換を行い,その結果の絶対値を格納します: dst(x,y,c) = abs(scale*src(x,y,c)+shift). 出力配列は,8u 型でなければいけません.その他の場合は, cvConvertScale + cvAbsDiffS を利用することができます.

dst(mask) = src1(mask) + src2(mask)

dst(mask) = src(mask) + value

dst(mask) = src1(mask) - src2(mask)

dst(mask) = value - src(mask)

dst(idx) = src1(idx) * src2(idx) * scale (2つの配列をスケーリングして要素ごとに乗算します)

スケーリングを伴う要素単位の除算・反転: src1 == 0 の場合, dst(idx) = src1(idx) * scale / src2(idx) または dst(idx) = scale / src2(idx)

dst = src1 * scale + src2

dst = src1 * alpha + src2 * beta + gamma

dst(idx) = src1(idx) & src2(idx)

dst(idx) = src(idx) & value

dst(idx) = src1(idx) | src2(idx)

dst(idx) = src(idx) | 値

dst(idx) = src1(idx) ^ src2(idx)

dst(idx) = src(idx) ^ value

dst(idx) = ~src(idx)

dst(idx) = lower(idx) <= src(idx) < upper(idx)

dst(idx) = lower <= src(idx) < upper

比較演算は,シングルチャンネルの配列のみをサポートします.デスティネーションイメージは,8uC1 または 8sC1 である必要があります. dst(idx) = src1(idx)cmp_opsrc2(idx)

dst(idx) = src1(idx)cmp_op

dst(idx) = min(src1(idx),src2(idx))

dst(idx) = max(src1(idx),src2(idx))

dst(idx) = min(src(idx),value)

dst(idx) = max(src(idx),value)

dst(x,y,c) = abs(src1(x,y,c) - src2(x,y,c))

dst(x,y,c) = abs(src(x,y,c) - value(c))

cartesian->polar 座標変換を行います.出力成分(大きさ,角度)のどちらか一方はオプションです.

極座標->デカルト座標変換を行います.出力される成分(大きさまたは角度)のどちらかはオプションです。マグニチュードがない場合は,すべて1であるとみなされます.

べき乗を行います: dst(idx) = src(idx)^power

指数計算を行います: dst(idx) = exp(src(idx)). オーバーフローはまだ処理されません。アンダーフローは処理されます.最大の相対誤差は,単精度の入力に対して ~7e-6 です.

自然対数を計算します: dst(idx) = log(abs(src(idx))). 0 の対数は,大きな負の数(~700)を与えます. 最大の相対誤差は,単精度出力では ~3e-7 です.

この関数は,一様分布あるいは正規分布した乱数で出力配列を埋めます.

引数
rng cvRNG によって初期化される CvRNG の状態.
arr コピー先の配列
dist_type 配布タイプ

-CV_RAND_UNI一様分布

  • CV_RAND_NORMAL正規分布またはガウス分布
param1 分布の最初のパラメータ.一様分布の場合は,乱数の範囲の下側の境界を含みます.正規分布の場合は,乱数の平均値を表します.
param2 分布の2番目のパラメータです。一様分布の場合は、乱数の範囲の排他的な上界です。正規分布の場合は、乱数の標準偏差です。
参照
randu, randn, RNG::fill.

多項式のすべての実根および複素根を見つける

この関数は,2つの3次元ベクトルのクロスプロダクトを計算します.

\[\texttt{dst} = \texttt{src1} \times \texttt{src2}\]

または

\[\begin{array}{l} \texttt{dst} _1 = \texttt{src1} _2 \texttt{src2} _3 - \texttt{src1} _3 \texttt{src2} _2 \\ \texttt{dst} _2 = \texttt{src1} _3 \texttt{src2} _1 - \texttt{src1} _1 \texttt{src2} _3 \\ \texttt{dst} _3 = \texttt{src1} _1 \texttt{src2} _2 - \texttt{src1} _2 \texttt{src2} _1 \end{array}\]

引数
src1 第1の入力ベクトル
src2 2番目の入力ベクトル
dst 出力ベクトル

拡張行列変換: dst = alpha*op(A)*op(B) + beta*op(C), ここで op(X)は X または X^T です.

入力配列の各要素を変換し,その結果であるベクトルを出力配列に格納します

入力配列の各要素に対して透視変換を行う

(A-delta)*(A-delta)^T (order=0) または (A-delta)^T*(A-delta) (order=1) を計算します.

行列の転置を行います.正方形の行列はその場で転置することができます。

対称行列を下側(LtoR=0)または上側(LtoR!=0)から補完します。

配列のデータを,水平軸(flip=0),垂直軸(flip=1),または両方の軸(flip=-1)でミラーリングします. cvFlip(src) は,画像を垂直方向に,シーケンスを水平方向に(その場で)反転させます.

行列の特異値分解を行います.

特異値後退代入を行います( A*X = B を解く):フラグは cvSVD と同じでなければいけません.

対称行列の固有値と固有ベクトルを求めます.

  • 対称行列の固有値と固有ベクトルを求めます */ 単位行列を作成します (mat_ij = i == j)

ベクトルの集合に対する共分散行列の計算

参照
flags

画素値の平均と標準偏差の算出

グローバルな最小・最大値とその位置を求める

参照
ref core_c_NormFlags "flags"
flags

離散フーリエ変換: 複素数->複素数,実数->ccs (順変換),ccs->実数 (逆変換)

参照
core_c_DftFlags "フラグ"

DFTの結果を乗算する。DFT(X)*DFT(Y) または DFT(X)*conj(DFT(Y))

参照
core_c_DftFlags "フラグ"

離散コサイン変換

参照
core_c_DftFlags "フラグ"

メモリストレージを解放する。親の子はすべて親より先に解放しなければなりません。子ストレージは、リリースされるとすべてのブロックを親に返します。

メモリ・ストレージをクリアする。これは,( cvRestoreMemStoragePos 以外では)ストレージに割り当てられたメモリを再利用するための唯一の方法(!!)です.子ストレージは,クリアされるとすべてのブロックを親ストレージに戻します.

ストレージの「空きメモリ」の位置を記憶します.

ストレージの「フリーメモリ」の位置を復元します.

シーケンスブロックのデフォルトサイズ(粒度)を変更します。デフォルトのサイズは~1Kバイト

シーケンスから最後の要素を削除し,オプションで保存します。

シーケンスから最初の要素を削除し,オプションで保存します。

シーケンスの末尾に複数の新しい要素を追加する

シーケンスの末尾から複数の要素を削除し,任意に保存する

指定したシーケンス要素の削除

シーケンスからすべての要素を削除します。解放されたメモリは, cvClearMemStorage または cvRestoreMemStoragePos が呼ばれない限り,同じシーケンスでのみ再利用することができます.

シーケンスライタを初期化します.新しい要素は,シーケンスの最後に追加されます.

cvCreateSeq と cvStartAppendToSeq の組み合わせ.

シーケンスヘッダを更新します.cvGetSeqElem やシーケンスリーダを介して,以前に書き込まれた要素にアクセスすると便利です.

シーケンスリーダを初期化します.シーケンスは,順方向にも逆方向にも読むことができます.

シーケンスリーダの位置を変更します.現在の位置に対して,絶対的または相対的な位置に移動します.

シーケンススライスの削除

シーケンスや配列を,別のシーケンスに挿入します。

要素比較機能を使って,シーケンスをインプレースでソートする

シーケンスの要素の順序を,その場で反転させる

インデックスで集合から要素を削除する

集合からすべての要素を削除する

2つの頂点を結ぶ辺を削除する

グラフからすべての頂点と辺を削除する

グラフスキャナを解放します。

ルックアップ変換を行う。ソース配列の要素(8uC1または8sC1)は,256要素のテーブルであるlutarrのインデックスとして使用されます.

指定された「親」配列を持つ木に配列を挿入します。親がフレームと等しい場合(例えば,最も外側にある輪郭),追加された輪郭は親へのヌルポインタを持ちます.

木から輪郭を削除します(輪郭の子も一緒に).

通常,この関数は直接呼び出されません.代わりに,単純なマクロ CV_TURN_ON_IPL_COMPATIBILITY() が利用されます.このマクロは, cvSetIPLAllocators を呼び出し,そこに IPL 割り当て関数へのポインタを渡します.

...
CV_TURN_ON_IPL_COMPATIBILITY()
...
引数
create_header IPL画像ヘッダを生成する関数へのポインタ.
allocate_data IPL画像データの割り当てを行う関数へのポインタ.
deallocate IPLイメージの割り当て解除を行う関数へのポインタ.
create_roi IPL画像のROI(Region of Interest)を作成する関数へのポインタ.
clone_image IPL画像の複製を行う関数へのポインタ.

この関数は,与えられたオブジェクトの型を見つけ,ダブルポインタでreleaseを呼び出します.

引数
struct_ptr オブジェクトへのダブルポインタ

エラー状態を静かに設定する

エラー状態を設定し,現在のエラーモードに応じていくつかの追加動作(メッセージボックスの表示,標準エラー出力へのメッセージの書き込み,アプリケーションの終了など)を行います.

参照
cv::accumulateSquare
cv::accumulateProduct
cv::accumulateWeighted

コピー元の2次元配列を、より大きなコピー先の配列の内部にコピーし、コピーされた領域の周りに指定された型(IPL_BORDER_*)の境界線を作成します。

引数
src コピー元の画像
dst コピー先の画像
smoothtype スムージングの種類,SmoothMethod_cを参照してください.
size1 スムージング操作の最初のパラメータ,アパーチャ幅です.正の奇数(1, 3, 5, ...)でなければなりません。
size2 スムージング操作の2番目のパラメータ,アパーチャの高さ.CV_MEDIAN や CV_BILATERAL では無視されます.単純なスケーリング/非スケーリング,ガウスぼかしの場合, size2 が0ならば size1 にセットされます.それ以外の場合は,正の奇数でなければいけません.
sigma1 ガウシアンパラメータの場合、このパラメータにはガウシアン$\sigma$(標準偏差)を指定します。これがゼロの場合、カーネルサイズから計算されます。

\[\sigma = 0.3 (n/2 - 1) + 0.8 \quad \text{where} \quad n= \begin{array}{l l} \mbox{\texttt{size1} for horizontal kernel} \\ \mbox{\texttt{size2} for vertical kernel} \end{array}\]

小さなカーネルに標準シグマを使うと($3\times 3$から$7\times 7$)を使用すると,速度が向上します.sigma1が0ではなく、size1とsize2が0の場合、カーネルサイズはシグマから計算されます(十分な精度で動作するため)。
sigma2 バイラテラル・フィルタリングの追加パラメータ
参照
cv::GaussianBlur,cv::blur,cv::medianBlur,cv::bilateralFilter.
引数
src 入力画像.
dst src と同じサイズ,同じチャンネル数の出力画像.
kernel シングルチャンネルの浮動小数点型行列であるコンボリューションカーネル(というよりも,相関カーネル).異なるチャンネルに異なるカーネルを適用したい場合は, split を用いて画像を別々のカラープレーンに分割し,それらを個別に処理します.
anchor カーネル内でのフィルタリングされた点の相対的な位置を示す,カーネルのアンカー.デフォルト値 (-1,-1) は,アンカーがカーネルの中心にあることを意味します.
参照
cv::filter2D
cv::integral

dst_width = floor(src_width/2)[+1], dst_height = floor(src_height/2)[+1].

参照
cv::pyrDown

dst_width = src_width*2, dst_height = src_height*2

参照
cv::pyrUp
cv::pyrMeanShiftFiltering
cv::watershed

(aperture_size = 1,3,5,7) または Scharr (aperture_size = -1) 演算子を使用します。Scharrは,1次dxまたはdy微分に対してのみ利用できます.

参照
cv::Sobel
cv::Laplacian
cv::cvtColor
cv::resize
覚え書き
::cvGetQuadrangleSubPix は, ::cvWarpAffine と似ていますが,外れ値は複製境界モードを用いて外挿されます.
参照
cv::warpAffine
cv::warpPerspective
cv::remap
cv::convertMaps
cv::warpPolar

Linear-Polar 画像の順変換,逆変換を行います.

参照
cv::warpPolar
cvCreateStructuringElementEx
cv::erode

element ポインタが NULL の場合,3x3 の矩形の要素が利用されます.

参照
cv::dilate
cv::morphologyEx
cv::moments
cv::HuMoments

dst(x,y) <- src(x + center.x - dst_width/2, y + center.y - dst_height/2). 小数点以下の座標を持つピクセルの値は,バイリニア補間を用いて取得されます

参照
cv::getRectSubPix

matrixarr = ( a11 a12 | b1 ) dst(x,y) <- src(A[x y]' + b) ( a21 a22 | b2 ) (バイリニア補間を用いて,分数座標を持つピクセルを取得します).

参照
cvWarpAffine
cv::matchTemplate

(substitutor が NULL の場合,最後に取得された輪郭がツリーから削除されます)

参照
cvFindContours

このリーダは,すべてのチェーンポイントの座標を反復的に取得するために利用されます.フリーマンコードをそのまま読み取る必要がある場合は,単純なシーケンスリーダを利用します.

参照
cvApproxChains

これは,ヒストグラムのビンの範囲を設定するための独立した関数です.パラメータ ranges と uniform のより詳細な説明は,同様に範囲を初期化できる関数 :ocvCalcHist を参照してください.ヒストグラムのビンの範囲は、ヒストグラムが計算される前、あるいはヒストグラムのバックプロジェクションが計算される前に設定しなければなりません。

引数
hist ヒストグラム.
ranges ビンの範囲を表す配列.詳細は, :ocvCreateHist を参照してください。
uniform 一様性フラグ.詳細は :ocvCreateHist を参照してください。

この関数は,ヒストグラム(ヘッダとデータ)を解放します.ヒストグラムへのポインタは,この関数によってクリアされます。もし *hist ポインタが既にNULLならば,この関数は何もしません.

引数
hist 解放されたヒストグラムへのダブルポインタ.

この関数は,密なヒストグラムの場合はすべてのヒストグラムビンを0にし,疎な配列の場合はすべてのヒストグラムビンを削除します.

引数
hist ヒストグラム.

この関数は,ヒストグラムの最小ビンと最大ビン,そしてそれらの位置を求めます.すべての出力引数はオプションです.同じ値を持つ複数の極大値の中から,(辞書的順序で)最小のインデックスを持つものが返されます.また,複数の極大値や極小値がある場合は,辞書的順序で最も早いもの(極大値の位置)が返されます.

引数
hist ヒストグラム.
min_value ヒストグラムの最小値へのポインタ.
max_value ヒストグラムの最大値へのポインタ.
min_idx 最小値を表す座標の配列へのポインタ.
max_idx 最大値を表す座標の配列へのポインタ.

この関数は,ヒストグラムのビンの合計が factor と等しくなるようにスケーリングすることで,ヒストグラムのビンを正規化します.

引数
hist ヒストグラムへのポインタ.
factor 正規化係数.

この関数は,指定した閾値以下のヒストグラムビンを消去します.

引数
hist ヒストグラムへのポインタ.
threshold しきい値レベル。

この関数は,ヒストグラムのコピーを作成します.2番目のヒストグラムポインタ *dst が NULL の場合は, src と同じサイズの新しいヒストグラムが作成されます.そうでない場合は,両方のヒストグラムの型とサイズが等しくなければいけません.そして,この関数は,コピー元のヒストグラムのビン値をコピー先のヒストグラムにコピーし, src と同じビン値の範囲を設定します.

引数
src コピー元ヒストグラム.
dst コピー先のヒストグラムへのポインタ.
参照
cv::calcHist
cvCalcBackProject.cv::calcBackProject

この関数は,入力画像のパッチのヒストグラムと,与えられたヒストグラムを比較することで,バックプロジェクションを計算します.この関数は, matchTemplate と似ていますが,ラスタパッチを検索窓内の可能なすべての位置と比較する代わりに,関数 CalcBackProjectPatch はヒストグラムを比較します.以下のアルゴリズム図をご覧ください。

image

引数
image ソース画像(ただし,CvMat** を渡しても構いません).
dst 出力画像。
range
hist ヒストグラム.
method cvCompareHist に渡される比較手法(この関数の説明を参照してください).
factor 出力画像の正規化スケールに影響を与える,ヒストグラムの正規化係数.よく分からない場合は,1を渡します.
参照
cvCalcBackProjectPatch

この関数は,次のような2つのヒストグラムから,物体の確率密度を求めます.

\[\texttt{disthist} (I)= \forkthree{0}{if \‍(\texttt{hist1}(I)=0\‍)}{\texttt{scale}}{if \‍(\texttt{hist1}(I) \ne 0\‍) and \‍(\texttt{hist2}(I) > \texttt{hist1}(I)\‍)}{\frac{\texttt{hist2}(I) \cdot \texttt{scale}}{\texttt{hist1}(I)}}{if \‍(\texttt{hist1}(I) \ne 0\‍) and \‍(\texttt{hist2}(I) \le \texttt{hist1}(I)\‍)}\]

引数
hist1 1番目のヒストグラム(除数).
hist2 2番目のヒストグラム.
dst_hist 移動先のヒストグラム.
scale 出力ヒストグラムのスケールファクタ.
参照
cv::equalizeHist
cv::distanceTransform

CV_ADAPTIVE_THRESH_MEAN_C および CV_ADAPTIVE_THRESH_GAUSSIAN_C の2つのパラメータは,近傍領域のサイズ(3, 5, 7 など)と,平均値から差し引かれる定数(...,-3,2,-1,0,1,2,3,...)です.

参照
cv::adaptiveThreshold
cv::floodFill
cv::Canny

Dx^2 * Dyy + Dxx * Dy^2 - 2 * Dx * Dy * Dxy. この結果に閾値を適用すると、角の座標が得られる

参照
cv::preCornerDetect
cv::cornerEigenValsAndVecs
cv::cornerMinEigenVal

det(M) - k*(trace(M)^2) を計算します。ここで M は各ピクセルの 2x2 勾配共分散行列です。

参照
cv::cornerHarris
cv::cornerSubPix
cv::goodFeaturesToTrack
cv::fitLine
cv::line

thickness<0(例えば, thickness == CV_FILLED )の場合,塗りつぶされたボックスが描画されます.

参照
cv::rectangle
cv::rectangle

thickness は, cvRectangle の場合と同じように動作します.

参照
cv::circle

に依存します.thickness,start_angleおよびend_angleパラメーターによって決まります.結果として得られる図形の回転は角度. 角度の単位は,すべて度です

参照
cv::ellipse
cv::fillConvexPoly
cv::fillPoly
cv::polylines

この関数は,テキスト描画関数に渡すことのできるフォント構造体を初期化します.

引数
font この関数によって初期化されたフォント構造体へのポインタ
font_face フォント名の識別子.を参照してください.cv::HersheyFontsと,それに対応する古い CV_* 識別子を参照してください.
hscale 水平方向のスケール.1.0f に等しい場合,文字はフォントの種類に応じた元の幅を持ちます.0.5f に等しい場合,文字は元の幅の半分になります.
vscale 垂直方向のスケール。1.0f に設定すると、フォントの種類に応じて、元の高さの文字が表示されます。0.5f の場合、文字の高さは元の半分になります。
shear 垂直線に対する文字の傾きのおおよその接線。0の場合はノンイタリックフォント、1.0fの場合は約45度の傾きなどを意味します。
thickness 文字のストロークの太さ
line_type ストロークの種類,線の説明を参照してください.
参照
cvPutText
cvInitFont, cvGetTextSize, cvFont,cv::putText
cv::getTextSize
cv::drawContours

cvDecRefData()

CV_INLINE void cvDecRefData ( CvArr * arr )

配列のデータ参照カウンタをデクリメントします.

この関数は,配列のデータ参照カウンタをデクリメントします.CvMatまたはCvMatND参照カウンタの

ポインタがNULLではない場合に,データ参照カウンタをデクリメントします.カウンタが0になった場合,データは解放されます.現在の実装では,データが cvCreateData 関数を用いて確保された場合のみ,参照カウンタが NULL ではありません.cvSetData を用いて外部データがヘッダに割り当てられた場合,ヘッダがより大きな行列や画像の一部である場合,ヘッダが画像や n 次元行列のヘッダから変換された場合など,その他の場合には,カウンタは NULL になります.

引数
arr 配列のヘッダへのポインタ.

cvGetCol()

CV_INLINE CvMat * cvGetCol ( const CvArr * arr,
CvMat * submat,
int col
)

これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。

引数
arr 入力配列
submat 結果として得られる部分配列のヘッダへのポインタ.
col 選択された列の,ゼロベースのインデックス.

cvGetNextSparseNode()

CV_INLINE CvSparseNode * cvGetNextSparseNode ( CvSparseMatIterator * mat_iterator )

疎な行列の次の要素を返します.

この関数は,イテレータを次の疎な行列要素に移動させ,そのポインタを返します.現在のバージョンでは,要素はハッシュテーブルに格納されているので,特に順序はありません.以下のサンプルは,疎な行列を反復処理する方法を示しています.

// print all the non-zero sparse matrix elements and compute their sum
double sum = 0;
int i, dims = cvGetDims(sparsemat);
CvSparseNode* node = cvInitSparseMatIterator(sparsemat, &it);
for(; node != 0; node = cvGetNextSparseNode(&it))
{
int* idx = CV_NODE_IDX(array, node);
float val = *(float*)CV_NODE_VAL(array, node);
printf("M");
for(i = 0; i < dims; i++ )
printf("[%d]", idx[i]);
printf("=%g\n", val);
sum += val;
}
printf("nTotal sum = %g\n", sum);
CV_INLINE CvSparseNode * cvGetNextSparseNode(CvSparseMatIterator *mat_iterator)
Returns the next sparse matrix element
Definition: core_c.h:542
Definition: core/types_c.h:787
Definition: core/types_c.h:780
引数
mat_iterator 疎な配列のイテレータ

cvGetRow()

CV_INLINE CvMat * cvGetRow ( const CvArr * arr,
CvMat * submat,
int row
)

これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。

引数
arr 入力配列
submat 結果として得られる部分配列のヘッダへのポインタ.
row 選択された行のゼロベースのインデックス

cvGetSetElem()

CV_INLINE CvSetElem * cvGetSetElem ( const CvSet * set_header,
int idx
)

インデックスで指定されたセット要素を返します。要素がセットに属していない場合は,NULLが返されます.

cvIncRefData()

CV_INLINE int cvIncRefData ( CvArr * arr )

配列データの参照カウンタをインクリメントします.

この関数は,データ参照カウンタをインクリメントしCvMatまたはCvMatNDデータ参照カウンタをインクリメントし,参照カウンタポインタがNULLでない場合は新しいカウンタ値を,そうでない場合は0を返します。

引数
arr 配列のヘッダ

cvMat()

CV_INLINE CvMat cvMat ( int rows,
int cols,
int type,
void *data CV_DEFAULTNULL
)

インラインのコンストラクタです。内部でデータが確保されることはありません.(cvCreateData と一緒に利用するか,割り当てられたデータを含む行列を得るために cvCreateMat を代わりに利用してください).

cvmGet()

CV_INLINE double cvmGet ( const CvMat * mat,
int row,
int col
)

シングルチャンネルの浮動小数点型行列の指定された要素を返します.

この関数は,シングルチャンネルの浮動小数点型行列において, cvGetReal2D の代わりに高速に動作します.この関数が高速なのは,インラインであること,配列の種類や配列の要素の種類に対するチェックが少ないこと,そして,デバッグモードでのみ行と列の範囲をチェックすることによります.

引数
mat 入力行列
row 行のゼロベースのインデックス
col columnの0ベースのインデックス

cvmSet()

CV_INLINE void cvmSet ( CvMat * mat,
int row,
int col,
double value
)

シングルチャンネルの浮動小数点型行列の,指定された要素を設定します.

この関数は,シングルチャンネルの浮動小数点型行列において, cvSetReal2D の代わりに高速に動作します.この関数が高速なのは,インラインであること,配列の種類や配列の要素の種類に対するチェックが少ないこと,そして,デバッグモードでのみ行と列の範囲をチェックすることによります.

引数
mat 行列の
row 行のゼロベースのインデックス
col columnの0ベースのインデックス
value 行列要素の新しい値

cvPoint()

CV_INLINE CvPoint cvPoint ( int x,
int y
)

コンストラクタCvPoint構造体である。

cvPoint2D32f()

CV_INLINE CvPoint2D32f cvPoint2D32f ( double x,
double y
)

コンストラクタCvPoint2D32f構造体である。

cvPoint2D64f()

CV_INLINE CvPoint2D64f cvPoint2D64f ( double x,
double y
)

コンストラクタCvPoint2D64f構造体である。

cvPoint3D32f()

CV_INLINE CvPoint3D32f cvPoint3D32f ( double x,
double y,
double z
)

コンストラクタCvPoint3D32f構造体である。

cvPoint3D64f()

CV_INLINE CvPoint3D64f cvPoint3D64f ( double x,
double y,
double z
)

コンストラクタCvPoint3D64f構造体である。

cvPointFrom32f()

CV_INLINE CvPoint cvPointFrom32f ( CvPoint2D32f point )

に変換します。CvPoint2D32fからCvPoint.

cvPointTo32f()

CV_INLINE CvPoint2D32f cvPointTo32f ( CvPoint point )

に変換します。CvPointからCvPoint2D32f.

cvRandInt()

CV_INLINE unsigned cvRandInt ( CvRNG * rng )

32 ビットの符号なし整数を返し,RNG を更新します.

この関数は,一様に分散されたランダムな 32 ビット符号なし整数を返し,RNG の状態を更新します.これは,C言語のランタイムライブラリの rand() 関数と似ていますが,OpenCV の関数は,プラットフォームによらず常に 32 ビットの乱数を生成します.

引数
rng cvRNG によって初期化される CvRNG の状態.

cvRandReal()

CV_INLINE double cvRandReal ( CvRNG * rng )

浮動小数点型の乱数を返し,RNGを更新します.

この関数は,0から1(1は含まれません)の間の一様に分布する浮動小数点型の乱数を返します.

引数
rng cvRNG によって初期化される RNG の状態.

cvRect()

CV_INLINE CvRect cvRect ( int x,
int y,
int width,
int height
)

コンストラクタCvRect構造体である。

cvReleaseMatND()

CV_INLINE void cvReleaseMatND ( CvMatND ** mat )

多次元配列を解放します.

この関数は,配列データの参照カウンタをデクリメントし,配列ヘッダを解放します.参照カウンタが 0 になった場合,データも解放されます.

if(*mat )
cvDecRefData(*mat);
cvFree((void**)mat);
引数
mat 配列へのダブルポインタ。

cvRNG()

CV_INLINE CvRNG cvRNG ( int64 seed CV_DEFAULT-1 )

乱数生成器の状態を初期化します。

この関数は、乱数生成器を初期化し、その状態を返します。この状態へのポインタは,関数 cvRandInt, cvRandReal, cvRandArr に渡すことができます.現在の実装では,キャリー付き乗算生成器が利用されています.

引数
seed ランダムシーケンスを開始するために利用される64ビットの値.
参照
CvRNG に代わって,C++ クラスの RNG が利用されます.

cvSetNew()

CV_INLINE CvSetElem * cvSetNew ( CvSet * set_header )

cvSetAdd の高速版.

cvSetRemoveByPtr()

CV_INLINE void cvSetRemoveByPtr ( CvSet * set_header,
void * elem
)

ポインタで指定されたセット要素を削除します.

cvSize()

CV_INLINE CvSize cvSize ( int width,
int height
)

コンストラクタCvSize構造体である。

cvSize2D32f()

CV_INLINE CvSize2D32f cvSize2D32f ( double width,
double height
)

コンストラクタCvSize2D32f構造体である。

cvSubS()

CV_INLINE void cvSubS ( const CvArr * src,
CvScalar value,
CvArr * dst,
const CvArr *mask CV_DEFAULTNULL
)

dst(mask) = src(mask) - value = src(mask) + (-value)