approxPolyDP
久しぶりにOpenCVネタ。「久しぶり」といっても触るのが本当に久しい訳ではなく、実際には色々と試しては壊しているのだが。
OpenCVは根っこの部分になると線型代数学等の私が全くからきしな分野になるし、その逆にプログラミングに降るとAPIの粒度が非常に細かいため日記では紹介するのが難しいネタなのだ。
findContourが2値化を施した画像の輪郭を抽出するAPIならばapproxPolyDPは、findContourで抽出した輪郭データを「ポリゴン近似」という手法でリサンプリングしてコンピュータがより理解しやすいデータに簡素化するAPIと考えると分かりやすい。(実際のところ、私はその用途以外でapproxPolyDPを使っているのを見たことが無い)
approxPolyDPの例
cv::findContours(tmp, contours ,CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE); for (size_t i = 0; i < contours.size(); i++) { cv::Mat contour = cv::Mat(contours[i]); cv::vector<cv::Point> approx; cv::approxPolyDP(contour, approx, epsilon, true); for( int i = 0 ; i < approx.size(); i++ ) { //抽出した頂点座標を処理 } }