1位衩、直方圖計算 ?—— ?calcHist()
void cv::calcHist (?const Mat * images, ? int? nimages, ? const int *? channels,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?InputArray? mask, ? OutputArray? hist, ? ?int? dims, ? const int *? histSize,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?const float **? ranges, ? ?bool? uniform = true, ? bool? accumulate = false ?)
共有10個參數,各參數說明如下:
images:源圖像僚祷,注意這里的格式是const Mat*贮缕,也就是說,你要傳入一個地址装哆,傳入的可以是一張圖片也可以是多張圖片定嗓,要求具有同深度同尺寸。
nimages:輸入圖像的個數宵溅。
Channels:List of the dims channels used to compute the histogram. The first array channels are numerated from 0 to images[0].channels()-1 , the second array channels are counted from images[0].channels() to images[0].channels() + images[1].channels()-1, and so on.
mask:可選的掩碼恃逻,如果不為空的話,那么它必須是8位且和image[i]尺寸相同寇损。
hist:輸出的直方圖润绵,二維數組。
dims:需要統(tǒng)計的直方圖維度(特征數目),必須是正數尘盼,且不大于CV_MAX_DIMS(這個版本opencv3.1里面是32)
histSize:存放每個維度的直方圖尺寸的數組。
ranges:每一維數值的取值范圍配紫。Array of the dims arrays of the histogram bin boundaries in each dimension. When the histogram is uniform ( uniform =true), then for each dimension i it is enough to specify the lower (inclusive) boundary L0 of the 0-th histogram bin and the upper (exclusive) boundary UhistSize[i]?1 for the last histogram bin histSize[i]-1 . That is, in case of a uniform histogram each of ranges[i] is an array of 2 elements. When the histogram is not uniform ( uniform=false ), then each of ranges[i] contains histSize[i]+1 elements: L0,U0=L1,U1=L2,...,UhistSize[i]?2=LhistSize[i]?1,UhistSize[i]?1 . The array elements, that are not between L0 and UhistSize[i]?1 , are not counted in the histogram.
uniform:表示直方圖是否均勻躺孝。
accumulate:累計標識符,若為ture植袍,直方圖在配置階段不會被清零。
2氛魁、尋找最值 ?—— ?minMaxLoc()
函數的作用就是再數組里面找到全局最大值和最小值厅篓。且這個函數對多通道的數組無效,因此多通道的要轉化為單通道再來使用或链。
void cv::minMaxLoc ( InputArray src,? double *? minVal, ? double *? maxVal = 0,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Point *? minLoc = 0, ?Point *? maxLoc = 0, ?InputArray? mask = noArray()?)?
6個參數:
? ? src:輸入單通道數組(圖像)? ?
? ? minVal:指向最大值的指針
? ? maxVal:指向最小值的指針
? ? minLoc:最小值位置的指針(二維下)? ?
? ? maxLoc:最大值位置的指針(二維下)? ?
? ? Mask:掩膜
3档押、直方圖歸一化 ?—— ?normalize()
void cv::normalize (InputArray src, ??InputOutputArray? dst, ?double? alpha = 1, ?double? beta = 0,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? int? norm_type = NORM_L2, ? int? dtype = -1, ? InputArray? mask = noArray() ) ? ? ? ? ? ? ?
7個參數:
? ? src :輸入數組
? ? Dst:輸出數組(支持原地運算)
? ? Alpha:range normalization模式的最小值
? ? Beta:range normalization模式的最大值汇荐,不用于norm normalization(范數歸一化)模式。
? ? normType:歸一化的類型掀淘,可以有以下的取值:
? ? ? ? NORM_MINMAX:數組的數值被平移或縮放到一個指定的范圍油昂,線性歸一化,一般較常用拦惋。
? ? ? ? NORM_INF: 此類型的定義沒有查到安寺,根據OpenCV 1的對應項,可能是歸一化數組的C-范數(絕對值的最大值)
? ? ? ? NORM_L1 :? 歸一化數組的L1-范數(絕對值的和)
? ? ? ? NORM_L2: 歸一化數組的(歐幾里德)L2-范數
? ? Dtype:dtype為負數時言秸,輸出數組的type與輸入數組的type相同迎捺;否則,輸出數組與輸入數組只是通道數相同抄沮,而tpye=CV_MAT_DEPTH(dtype).
? ? Mask:操作掩膜,用于指示函數是否僅僅對指定的元素進行操作叛买。