opencv 棋盤查找findChessboardCorners函式使用
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 );
引數說明
Image:
輸入的棋盤圖,必須是8位的灰度或者彩色影像,
pattern_size:
棋盤圖中每行和每列角點的個數,
Corners:
檢測到的角點
corner_count:
輸出,角點的個數,如果不是NULL,函式將檢測到的角點的個數存盤于此變數,
Flags:
各種操作標志,可以是0或者下面值的組合:
CV_CALIB_CB_ADAPTIVE_THRESH -使用自適應閾值(通過平均影像亮度計算得到)將影像轉換為黑白圖,而不是一個固定的閾值,
CV_CALIB_CB_NORMALIZE_IMAGE -在利用固定閾值或者自適應的閾值進行二值化之前,先使用cvNormalizeHist來均衡化影像亮度,
CV_CALIB_CB_FILTER_QUADS -使用其他的準則(如輪廓面積,周長,方形形狀)來去除在輪廓檢測階段檢測到的錯誤方塊,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/551.html
標籤:其他
