我通常会找到通常出现在我身上的问题的所有答案,不幸的是在这种情况下我找不到解决方案。我有以下代码
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);
}
问题是质心不在它应该在的地方。这些点的高度相同但宽度错误。我已经使用每个轮廓的圆图检查了“质心”,并且这些点都可以
有人可以帮我解决这个问题吗