diff options
| -rw-r--r-- | detect_road_borders.cpp | 18 | 
1 files changed, 9 insertions, 9 deletions
| diff --git a/detect_road_borders.cpp b/detect_road_borders.cpp index 14841f3..af35651 100644 --- a/detect_road_borders.cpp +++ b/detect_road_borders.cpp @@ -428,10 +428,10 @@ int find_bestquality_index(const vector<Point>& contour, double* angle_derivativ  	*bestquality_width_out = bestquality_width;  } -int find_ideal_line(int xlen, int ylen, vector<Point>& contour, int** contour_map, int bestquality_j) +int find_ideal_line(int xlen, int ylen, vector<Point>& contour, Point origin_point, int** contour_map, int bestquality_j)  // TODO: this code is crappy, slow, and uses brute force. did i mention it's crappy and slow?  { -	int intersection = find_intersection_index(xlen/2,                     ylen-ylen/5,  +	int intersection = find_intersection_index(origin_point.x,           origin_point.y,   											   contour[bestquality_j].x, contour[bestquality_j].y,        contour_map);  	int steering_point=-1; @@ -449,7 +449,7 @@ int find_ideal_line(int xlen, int ylen, vector<Point>& contour, int** contour_ma  			// rotate the line to the left till it gets better  			for (; xx>=0; xx--)  			{ -				int intersection2 = find_intersection_index(xlen/2, ylen-ylen/5, xx, contour[bestquality_j].y, contour_map); +				int intersection2 = find_intersection_index(origin_point.x, origin_point.y, xx, contour[bestquality_j].y, contour_map);  				if (intersection2<0) // won't happen anyway  					break; @@ -468,7 +468,7 @@ int find_ideal_line(int xlen, int ylen, vector<Point>& contour, int** contour_ma  			// rotate the line to the right till it gets better  			for (; xx<xlen; xx++)  			{ -				int intersection2 = find_intersection_index(xlen/2, ylen-ylen/5, xx, contour[bestquality_j].y, contour_map); +				int intersection2 = find_intersection_index(origin_point.x, origin_point.y, xx, contour[bestquality_j].y, contour_map);  				if (intersection2<0)// won't happen anyway  					break; @@ -485,7 +485,7 @@ int find_ideal_line(int xlen, int ylen, vector<Point>& contour, int** contour_ma  		// else // we directly met the bestquality point, i.e. where we wanted to go to.  			// do nothing -		return find_intersection_index(xlen/2, ylen-ylen/5, xx, contour[bestquality_j].y, contour_map, false); +		return find_intersection_index(origin_point.x,origin_point.y, xx, contour[bestquality_j].y, contour_map, false);  	}  } @@ -547,7 +547,7 @@ void draw_it_all(Mat drawing, vector< vector<Point> >& contours, const vector<Ve  #define SMOOTHEN_MIDDLE 10  #define ANG_SMOOTH 9  // return the index of the point to steer to. -int find_steering_point(Mat orig_img, int** contour_map, Mat& drawing) // orig_img is a binary image +int find_steering_point(Mat orig_img, Point origin_point, int** contour_map, Mat& drawing) // orig_img is a binary image  {  	Mat img;  	orig_img.copyTo(img); // this is needed because findContours destroys its input. @@ -575,10 +575,10 @@ int find_steering_point(Mat orig_img, int** contour_map, Mat& drawing) // orig_i  	// now we have a naive steering point. the way to it might lead  	// us offroad, however. -	int steering_point=find_ideal_line(img.cols,img.rows, contour, contour_map, bestquality_j); +	int steering_point=find_ideal_line(img.cols,img.rows, contour, origin_point, contour_map, bestquality_j); -	draw_it_all(drawing, contours, hierarchy, first_nonbottom_idx, contour, angles, angle_derivative,bestquality_j,bestquality_width,bestquality,steering_point, Point(img.cols/2, img.rows-img.rows/5)); +	draw_it_all(drawing, contours, hierarchy, first_nonbottom_idx, contour, angles, angle_derivative,bestquality_j,bestquality_width,bestquality,steering_point, origin_point);  	delete [] angle_derivative;  	delete [] angles; @@ -648,7 +648,7 @@ int main(int argc, char* argv[])  		Mat drawing; -		find_steering_point(thres, contour_map, drawing); +		find_steering_point(thres, Point(thres.cols/2, thres.rows-thres.rows/5), contour_map, drawing); | 
