凸性欠陥のポイントを回復しようとしていますが、関数は整数のみを返します。これらのポイントを見つける方法のヒントを教えてください。
vector<vector<Point> >hull2( contours.size() );
vector<vector<int>> hull(contours.size());
std::vector<cv::Vec4i> convexityDefectsSet;
for( int i = 0; i < contours.size(); i++ ) {
convexHull( Mat(contours[i]), hull[i], false );
convexHull(Mat(contours[i]), hull2[i], false);
if (contours[i].size() > 3) {
cv::convexityDefects(Mat(contours[i]), hull[i], convexityDefectsSet);
for (int cDefIt = 0; cDefIt < convexityDefectsSet.size(); cDefIt++) {
int startIdx = convexityDefectsSet[cDefIt].val[0];
int endIdx = convexityDefectsSet[cDefIt].val[1];
int defectPtIdx = convexityDefectsSet[cDefIt].val[2];
double depth = static_cast<double>(convexityDefectsSet[cDefIt].val[3]) / 256.0;
std::cout << startIdx << ' ' << endIdx << ' ' << defectPtIdx << ' ' << depth << '\n' << '\n' << std::endl;
Scalar color = Scalar( rng.uniform(0, 255), rng.uniform(0,255), rng.uniform(0,255) );
Point2f p(defectPtIdx, defectPtIdx);
circle(frame, p , 10, color, 2, 8, 0 );
}
}}