def addCurvatureStamp(leftFit, rightFit, image, origin, color=(255, 255, 255), fontScale=1.0): """ Evaluating lane curvature and adding it to a given image :param leftFit: left curve polynomial parameters :param rightFit: right curve polynomial parameters :param image: image where data being added :param origin: upper-left corner of the offset stamp :param color: stamp color :param fontScale: font scale :return: void (adds text to passed image) """ imgH = image.shape[0] yBottom = imgH-1 scaleY = 27 / imgH # meters per pixel leftCurvature = aux.curvature(fitParams=leftFit, variable=yBottom, scale=scaleY) rightCurvature = aux.curvature(fitParams=rightFit, variable=yBottom, scale=scaleY) curvature = (leftCurvature + rightCurvature) / 2 aux.putText(img=image, text='Estimated Lane Curvature: {:.1f} m'.format(round(curvature / 100, 1) * 100), origin=origin, color=color, scale=fontScale)
def lanefinding_pipeline(image, left_lane_line, right_lane_line): #def find_lane_lines(image): undist = camera_cal(image, mtx, dist) thresholded = threshold(undist) warped, M, M_inv = perspective_transform(thresholded, mtx, dist, src, dest) #if not (left_lane_line.detected or right_lane_line.detected): left_lane_line, right_lane_line, car_center, lane_center, y, out_img = sliding_window( warped, left_lane_line, right_lane_line) # print(left_fit) # print(right_fit) # update Line objects # left_lane_line.detected = True # right_lane_line.detected = True # if abs(offset(car_center, lane_center)) > 0.3: # left_lane_line, right_lane_line, car_center, lane_center = prior_frame_search(warped, 100, left_lane_line.current_fit, right_lane_line.current_fit) # left_fit, right_fit, left_fitx, right_fitx, y, out_img = fit_poly(warped.shape, leftx, lefty, rightx, righty, out_img) # sanity checks # left_curve, right_curve = curvature(left_lane_line.fit_x, right_lane_line.fit_x, y) # curverad = curvature(left_lane_line.fit_x, left_lane_line.fit_y) #left_curve, right_curve = curvature(left_lane_line.fit_x, right_lane_line.fit_x, y) left_curve = curvature(left_lane_line.fit_x, left_lane_line.fit_y) right_curve = curvature(right_lane_line.fit_x, right_lane_line.fit_y) # print(left_curve, right_curve) # if left_curve < 1000 or right_curve < 1000: # #leftx, lefty, rightx, righty, car_center, lane_center = prior_frame_search(warped, 100, left_lane_line.current_fit, right_lane_line.current_fit) # left_fit, right_fit, left_fitx, right_fitx, y, out_img = fit_poly(warped.shape, leftx, lefty, rightx, righty, out_img) # left_curve, right_curve = curvature(left_fit, right_fit, y) # result = draw_lane_lines(image, undist, warped, left_lane_line.recent_xfitted, right_lane_line.recent_xfitted, y, M_inv, prev_car_center, prev_lane_center, # left_lane_line.radius_of_curvature, right_lane_line.radius_of_curvature) # else: # # update Line objects # left_lane_line.current_fit = left_fit # right_lane_line.current_fit = right_fit # left_lane_line.recent_xfitted = left_fitx # right_lane_line.recent_xfitted = right_fitx # left_lane_line.radius_of_curvature = left_curve # right_lane_line.radius_of_curvature = right_curve # prev_car_center = car_center # prev_lane_center = lane_center # leftx, lefty, rightx, righty, car_center, lane_center = base_lane_lines(warped) # left_fit, right_fit, left_fitx, right_fitx, y = fit_poly(warped.shape, leftx, lefty, rightx, righty) # left_curve, right_curve = curvature(left_fit, right_fit, y) result = draw_lane_lines(image, undist, warped, left_lane_line.fit_x, right_lane_line.fit_x, y, M_inv, car_center, lane_center, left_curve, right_curve) # draw_copy = np.copy(result) # plt.imshow(draw_copy) # plt.show() #plt.imshow(warped, cmap = "gray") # plt.imshow(result) # plt.show() return result