###前提・実現したいこと
VisualStudioとOpenCVを用いて、色認識を行った後最大領域を取得したいと思っております。
下記のような形にしたいと思います。
C++
1//src_img は特定の色を抜き取っただけ。ノイズあり 2//この関数でノイズを取り払うため、最大領域のみを抽出したMat型が欲しい。最大領域以外はマスク 3Mat MaxArea(Mat src_img){ 4//最大領域を計算 5 return output; 6}
###該当のソースコード
最大領域を抽出する関数を下記のサイトより参考にしたものになります。
最大領域の取得までは出来ていると思うのですが、ここから何を追記したら出来るのかが分かりません。
C++
1Mat MaxArea(Mat srcImg) { 2 Mat input(srcImg.rows, srcImg.cols, srcImg.type()); 3 Mat Output(srcImg.rows, srcImg.cols, srcImg.type());//出力用のMat 4 5 threshold(srcImg, input, 200, 255, CV_THRESH_BINARY); 6 7 std::vector<std::vector<Point>> controus; 8 findContours(input, controus, CV_RETR_LIST, CV_CHAIN_APPROX_NONE); 9 auto maxContour = std::max_element(controus.begin(), controus.end(), [](std::vector<Point> x, std::vector<Point> y){ 10 return contourArea(x) < contourArea(y); 11 }); 12 13 auto area = [maxContour]() { 14 Mat pointf; 15 Mat(*maxContour).convertTo(pointf, CV_32F); 16 17 return fitEllipse(pointf); 18 }(); 19 //ここから何を追加していいのか分からない 20 21 return Output;//Output :最大領域のみ抽出したMat型 22}
###質問
該当のソースコードに何を追加したら、実現したいところで書いた関数の形に出来るのか。
###試したこと
http://blog.okazuki.jp/entry/2015/01/31/232916を参考に最大領域の抽出を行いました。
###補足情報(言語/FW/ツール等のバージョンなど)
Visual Studio 2017 Community
OpenCV 3.4.0
回答2件
あなたの回答
tips
プレビュー