找出物體輪廓後,我們可以根據這個輪廓,找出這個物體的一些特徵,這邊用OpenCV的moment()、contourArea()、arcLength()函式,來找輪廓的質心、周長、面積,而這些特徵可以作為物件辨識的資訊。
OpenCV計算矩
Moments moments(InputArray array, bool binaryImage=false)
array:來源圖,可以輸入8位元單通道圖、浮點數2維陣列,或1xN、Nx1的Point或Point2f陣列。binaryImage:影像設定,只有array為影像時才有效果,如果設定為true,所有非零的像素都列入計算。可從Moments計算質心位置。
假設返回一個Moments mu,我們可依據下式,從mu計算質心位置,m10、m00、m01、m00都是Moments的類別成員。
Point2f center = Point2f(mu.m10/mu.m00 , mu.m01/mu.m00);
OpenCV計算面積
double contourArea(InputArray contour, bool oriented=false)
contour:輸入輪廓,一個含有2維點的vector。oriented:輪廓方向,如果設為ture的話除了面積還會記錄方向,順時鐘和逆時鐘會有正負號的差異,預設為false,不論輪廓方向都返回正的面積值。
OpenCV計算周長:
double arcLength(InputArray curve, bool closed)
curve:輸入輪廓,一個含有2維點的vector。closed:輪廓封閉,指定curve是否封閉,返回曲線的長度或封閉輪廓的周長。
转自:http://monkeycoding.com/?p=617
转载请注明原文地址: https://ju.6miu.com/read-11978.html