فهرست منبع

quick distance calulation, small speedup

scanner 7 سال پیش
والد
کامیت
45115fce04
2فایلهای تغییر یافته به همراه5 افزوده شده و 4 حذف شده
  1. 4 3
      cvutils.cpp
  2. 1 1
      geometry.cpp

+ 4 - 3
cvutils.cpp

@@ -30,7 +30,7 @@ unsigned* max2_distance(std::vector<cv::Point> hull)
 	{
 		cv::Point thispoint=hull[i];
 		cv::Point nextpoint=hull[(i+1)%hull.size()];
-		int d=dist(thispoint,nextpoint);
+		double d=dist(thispoint,nextpoint);
 		if( d>distance[0] ) //the biggest till now
 		{
 			idx[1]=idx[0];
@@ -134,9 +134,10 @@ find_longest_line(std::vector<cv::Point> hull, unsigned begin, unsigned end) //t
 		if(similar_fit(thisline, hull[i])) {
 			thisline.push_back(hull[i]);
 		} else { // considering if the just-finished line is the best
-			if(dist(thisline[0],thisline[thisline.size()-1])>bestdistance) {
+			double thisdistance = dist(thisline[0],thisline[thisline.size()-1]);
+			if(thisdistance>bestdistance) {
 				bestline = thisline;
-				bestdistance = dist(thisline[0],thisline[thisline.size()-1]);
+				bestdistance = thisdistance;
 			}
 			thisline.clear();
 			assert(bestline.size()>=2);

+ 1 - 1
geometry.cpp

@@ -14,7 +14,7 @@ using namespace cv;
 
 double dist(Point a, Point b)
 {
-		return sqrt((double)pow(a.x-b.x,2)+pow(a.y-b.y,2));
+	return cv::norm(a-b);
 }
 
 double inner_angle(Point a, Point middle, Point b)