Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
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