opencv 棋盤查找findChessboardCorners函數使用java
Size size=new Size(6,9); MatOfPoint2f pos=new MatOfPoint2f(); boolean chessboardCorners = Calib3d.findChessboardCorners(mat, size, pos, Calib3d.CALIB_CB_ADAPTIVE_THRESH|Calib3d.CALIB_CB_NORMALIZE_IMAGE); if (chessboardCorners) { Calib3d.drawChessboardCorners(mat, size, pos, true); }else { Log.i(TAG, "handle: jason error"); }
函數形式函數
int cvFindChessboardCorners( const void* image, CvSize pattern_size, CvPoint2D32f* corners, int* corner_count=NULL, int flags=CV_CALIB_CB_ADAPTIVE_THRESH );3d
參數說明code
Image:orm
輸入的棋盤圖,必須是8位的灰度或者彩色圖像。opencv
pattern_size:class
棋盤圖中每行和每列角點的個數。變量
Corners:自適應
檢測到的角點im
corner_count:
輸出,角點的個數。若是不是NULL,函數將檢測到的角點的個數存儲於此變量。
Flags:
各類操做標誌,能夠是0或者下面值的組合:
CV_CALIB_CB_ADAPTIVE_THRESH -使用自適應閾值(經過平均圖像亮度計算獲得)將圖像轉換爲黑白圖,而不是一個固定的閾值。
CV_CALIB_CB_NORMALIZE_IMAGE -在利用固定閾值或者自適應的閾值進行二值化以前,先使用cvNormalizeHist來均衡化圖像亮度。
CV_CALIB_CB_FILTER_QUADS -使用其餘的準則(如輪廓面積,周長,方形形狀)來去除在輪廓檢測階段檢測到的錯誤方塊。