OpenCV関数findChessboardCornersの内部動作は何ですか?
OpenCV関数findChessboardCornersの内部動作は何ですか?
回答:
OpenCVのソースコードが利用できるので、少し時間をかけてコードを確認することをお勧めします。この特定の機能に関連するファイルは次のとおりです。
詳細には調べていませんが、
CV_IMPL
int cvFindChessboardCorners( const void* arr, CvSize pattern_size,
CvPoint2D32f* out_corners, int* out_corner_count,
int flags )
このメソッドのメインの実装です。ここでは
cvCheckChessboard
画像にチェス盤があるかどうかを判断するために使用しますicvGenerateQuads
正方形を見つけるために使用します。 コードは、これらを凝縮するために一連のチェックかかわらず行くように見えるquads
など、チェス盤のコーナーにicvFindConnectedQuads
、icvCleanFoundConnectedQuads
余分なコーナーを削除するためにicvCheckQuadGroup
、とicvCheckBoardMonotony
。
これらの関数はすべてcvCheckChessboard
、calib3d / src / checkchessboard.cppにあるものを除いて、同じファイルに実装されています。コードをどの程度理解したいかに応じて#define DEBUG_CHESSBOARD
、何が起こっているのかを確認するのに役立つデバッグ行がいくつかあるようです。