私は通常、出てきた問題に対するすべての答えを見つけることができますが、残念ながら、この場合は解決策を見つけることができませんでした. 次のコードがあります
Mat drawing = Mat::zeros( threshold_output.size(), CV_8UC3 );
namedWindow( "Contours", CV_WINDOW_AUTOSIZE );
for( int i = 0; i< contours.size(); i++ ){
Scalar color = Scalar( rng.uniform(0, 255), rng.uniform(0,255), rng.uniform(0,255) );
drawContours( drawing, contours_poly, i, color, 1, 8, vector<Vec4i>(), 0, Point() );
rectangle( drawing, boundRect[i].tl(), boundRect[i].br(), color, 2, 8, 0 );
drawing.at<Vec3i>(centroid[i])[0]=color[0];
drawing.at<Vec3i>(centroid[i])[1]=color[1];
drawing.at<Vec3i>(centroid[i])[2]=color[2];
circle(drawing, centroid[i], 5, color, 3,8,0);
cout<<centroid[i]<<endl;
imshow( "Contours", drawing );
waitKey(0);
}
そして問題は、重心が本来あるべき場所ではないことです。ポイントは同じ高さにありますが、幅が間違っています。各輪郭の円描画を使用して「重心」を既に確認しており、点は問題ありません
誰かが私を助けてくれますか