Python のコードがあり、それを c++ に移植しています。drawContours
OpenCV c++ の関数で奇妙な問題が発生しています。
self.contours[i] = cv2.convexHull(self.contours[i])
cv2.drawContours(self.segments[object], [self.contours[i]], 0, 255, -1)
これは Python での関数呼び出しで、厚さパラメーターの値 -1 は輪郭を塗りつぶすために使用され、結果は次のようになります。
私はc ++でまったく同じことをしていますが、
cv::convexHull(cv::Mat(contour), hull);
cv::drawContours(this->objectSegments[currentObject], cv::Mat(hull), -1, 255, -1);
しかし、これは結果の画像です:
(ポイントをよく見てくださいconvexhull
。これは簡単には見えません)。塗りつぶされたポリゴンではなく、ポイントのみを取得しています。私もfillPoly
likeを使ってみました、
cv::fillPoly(this->objectSegments[currentObject],cv::Mat(hull),255);
しかし、役に立ちません。問題を解決するのを手伝ってください。私は非常に些細なことを見逃していると確信していますが、それを見つけることができませんでした。