diff --git a/samples/cpp/select3dobj.cpp b/samples/cpp/select3dobj.cpp index 2fb7e39e6b..a3463d7463 100644 --- a/samples/cpp/select3dobj.cpp +++ b/samples/cpp/select3dobj.cpp @@ -122,8 +122,15 @@ static Rect extract3DBox(const Mat& frame, Mat& shownFrame, Mat& selectedObjFram fillConvexPoly(selectedObjMask, &hull[0], hull.size(), Scalar::all(255), 8, 0); Rect roi = boundingRect(Mat(hull)) & Rect(Point(), frame.size()); - ///////////////// insert GrabCut here //////////////////// - ////////////////////////////////////////////////////////// + if( runExtraSegmentation ) + { + selectedObjMask = Scalar::all(GC_BGD); + fillConvexPoly(selectedObjMask, &hull[0], hull.size(), Scalar::all(GC_PR_FGD), 8, 0); + Mat bgdModel, fgdModel; + grabCut(frame, selectedObjMask, roi, bgdModel, fgdModel, + 3, GC_INIT_WITH_RECT + GC_INIT_WITH_MASK); + bitwise_and(selectedObjMask, Scalar::all(1), selectedObjMask); + } frame.copyTo(selectedObjFrame, selectedObjMask); return roi;