给定一个随机轮廓,如何判断给定的输入点是否位于轮廓内?我很抱歉,如果它有一个简单的解决方案,但我无法弄明白。
我的一个想法是使用线的方程,连接点并查看它是否更大或更小等。但这并不能让我在任何地方,因为它取决于线的位置。
答案 0 :(得分:2)
您可以使用OpenCV here
找到此问题的完整解决方案 /// Get the contours
vector<vector<Point> > contours; vector<Vec4i> hierarchy;
Mat src_copy = src.clone();
findContours( src_copy, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE);
/// Calculate the distances to the contour
Mat raw_dist( src.size(), CV_32FC1 );
for( int j = 0; j < src.rows; j++ )
{ for( int i = 0; i < src.cols; i++ )
{ raw_dist.at<float>(j,i) = pointPolygonTest( contours[0], Point2f(i,j), true ); }
}