Commit 64e99f69 authored by Sparkf's avatar Sparkf 🏙️
Browse files

optimize module

parent 3165d0e6
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
import numpy as np
import cv2
import ld_module_transform

from numba import njit, prange

def get_bin_img(img, kernel_size=3, sobel_dirn='X', sobel_thresh=(0, 255), r_thresh=(0, 255),
                s_thresh=(0, 255), b_thresh=(0, 255), g_thresh=(0, 255)):
+18 −16
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@ import os
import json
from skimage.filters import threshold_otsu
import time

from numba import njit, prange

def intensity_map(input_array, distance):
    histogram = np.sum(input_array[input_array.shape[0] // 2:, :], axis=0)
@@ -39,12 +39,14 @@ def find_point(input_img, start_W):
def find_hist_iteration(input_img, baseline=500, start_W=0):
    input_img_hist_iter = input_img[baseline:baseline + 149, start_W:start_W + 200]
    find_hist_iteration_iter = np.sum(input_img_hist_iter[input_img_hist_iter.shape[0] // 2:, :], axis=0)
    peak_hist = find_peaks(find_hist_iteration_iter, distance=250)[0] or [0]
    if (find_hist_iteration_iter[peak_hist[0]] < 20) or peak_hist.size == 0:
        find_hist_iteration(baseline - 50, start_W)
    peak_hist = np.argmax(find_hist_iteration_iter)
    if (find_hist_iteration_iter[peak_hist] < 20):
        find_hist_iteration(input_img,baseline - 50, start_W)
    else:
        pass
    return (peak_hist[0] + start_W), baseline + 50
    return (peak_hist + start_W), baseline + 50




def gen_windows(input_img, bottom_H, midpoint_W, H, W):
@@ -54,36 +56,36 @@ def gen_windows(input_img, bottom_H, midpoint_W, H, W):
    W = 100
    # window_arr = input_img[]
    histogram_window = np.sum(window[window.shape[0] // 2:, :], axis=0)
    window_peak = find_peaks(histogram_window, distance=100)[0]

    # window_peak = find_peaks(histogram_window, distance=100)[0]
    window_peak = np.argmax(histogram_window)
    return_mid = 0

    if window_peak.size > 0:

    if histogram_window[window_peak] > 5 and np.abs(window_peak - (W / 2)) < 40:
        return_mid = midpoint_W - (W / 2) + window_peak
    else:
        return_mid = midpoint_W
    else:
        return_mid = midpoint_W

        find_indicator = 0
    # plt.plot(histogram_window)
    # plt.show()
    return bottom_H - H / 2, return_mid, find_indicator


def fit_lane(input_img,midpoint):
    midpoint_arr = np.zeros((0, 2)).astype(int)
    xcl = 0
    ycl = 0
    rcl = 0

    # midpoint_arr = find_point(input_img, midpoint - 100)
    # divisionzero error !
    # ycl, xcl, rcl, _ = circle_fit.hyper_fit(midpoint_arr)

    try:
        midpoint_arr = find_point(input_img,midpoint - 100)
        # plt.scatter(x=midpoint_arr.T[0], y=midpoint_arr.T[1], s=8)
        ycl, xcl, rcl, _ = circle_fit.hyper_fit(midpoint_arr)
        # print(rcl)
        # if (rcl > 1000):
        #     plt.gca().add_artist(plt.Circle((ycl, xcl), rcl, color='r', fill=False))
        print(rcl)
    except Exception:
        pass
    return midpoint_arr, ycl, xcl, rcl
 No newline at end of file
+1 −1
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@ import json
from skimage.filters import threshold_otsu
import time
import ld_module_binary

from numba import njit, prange


def transform_to(input_img):
+63 −58
Original line number Diff line number Diff line
@@ -17,44 +17,7 @@ rootdir = 'D:/train_set/clips/examine/'
foldername = "null"



for subdir, dirs, files in os.walk(rootdir):
    for d in dirs:
        # for file in files:
        #     impath = os.path.join(subdir, file)
        # read into seq
        # buffer first three image

        # img_buffer_array = np.zeros([4, 720, 1280, 3]).astype('uint8')
        # for k1 in range(1, 4):
        #     print(subdir + d + "/" + str(k1) + ".jpg")
        #     input_img = cv2.imread(subdir + d + "/" + str(k1) + ".jpg")
        #     input_img = cv2.cvtColor(input_img, cv2.COLOR_BGR2RGB)
        #     img_buffer_array[k1 - 1] = input_img
        #     print(k1)
        # rotate_num = 3

        for k2 in range(1, 21):
            input_img = cv2.imread(subdir + d + "/" + str(k2) + ".jpg")
            input_img = cv2.cvtColor(input_img, cv2.COLOR_BGR2RGB)

            # yellow filter
            input_img = cv2.cvtColor(input_img, cv2.COLOR_BGR2RGB)
            original_img = input_img
            # img_buffer_array[rotate_num] = input_img
            # input_img = (img_buffer_array[(rotate_num) % 4] * 0.25 + img_buffer_array[(rotate_num - 1) % 4] * 0.25 +
            #              img_buffer_array[
            #                  (rotate_num - 2) % 4] * 0.25 + img_buffer_array[(rotate_num - 3) % 4] * 0.25).astype(
            #     'uint8')
            # input_img = np.maximum.reduce([img_buffer_array[(rotate_num) % 4], img_buffer_array[(rotate_num - 1) % 4],
            #                                img_buffer_array[(rotate_num - 2) % 4],
            #                                img_buffer_array[(rotate_num - 3) % 4]]).astype('uint8')
            # input_img = input_img[:,:,0]
            # foldername = subdir[-19:]
            foldername = d
            filename = str(k2)
            i = 0

def lane_detection(input_img, original_img, i):
    # 1 perspective transformation
    transformed_img = ld_module_transform.transform_to(input_img)

@@ -93,9 +56,11 @@ for subdir, dirs, files in os.walk(rootdir):

        if 100 < midpoint < 500:
            point_array, ycl, xcl, rcl = ld_module_detection.fit_lane(input_img, midpoint)
            # print(point_array)

            # 3.1.3.1 draw line over the original image
                    if point_array.size > 0 and rcl > 800 and rcl < 2147483647:
            if point_array.size > 0:
                # and rcl > 800 and rcl < 2147483647
                for point in point_array:
                    cv2.circle(mark_layer, tuple(point), 10, (0, 0, 255), thickness=-1)
                    cv2.circle(mark_layer, tuple([int(ycl), int(xcl)]), int(rcl), (0, 255, 0), thickness=10)
@@ -111,7 +76,47 @@ for subdir, dirs, files in os.walk(rootdir):
        original_img = original_img * mark_layer_mask + mark_layer_trans

        # 4 save image
        # simulate not save image
        cv2.imwrite("op_module/" + foldername + "_" + filename + ".png", original_img)


for subdir, dirs, files in os.walk(rootdir):
    for d in dirs:
        # for file in files:
        #     impath = os.path.join(subdir, file)
        # read into seq
        # buffer first three image

        # img_buffer_array = np.zeros([4, 720, 1280, 3]).astype('uint8')
        # for k1 in range(1, 4):
        #     print(subdir + d + "/" + str(k1) + ".jpg")
        #     input_img = cv2.imread(subdir + d + "/" + str(k1) + ".jpg")
        #     input_img = cv2.cvtColor(input_img, cv2.COLOR_BGR2RGB)
        #     img_buffer_array[k1 - 1] = input_img
        #     print(k1)
        # rotate_num = 3

        for k2 in range(1, 21):
            input_img = cv2.imread(subdir + d + "/" + str(k2) + ".jpg")
            input_img = cv2.cvtColor(input_img, cv2.COLOR_BGR2RGB)

            # yellow filter
            input_img = cv2.cvtColor(input_img, cv2.COLOR_BGR2RGB)
            original_img = input_img
            # img_buffer_array[rotate_num] = input_img
            # input_img = (img_buffer_array[(rotate_num) % 4] * 0.25 + img_buffer_array[(rotate_num - 1) % 4] * 0.25 +
            #              img_buffer_array[
            #                  (rotate_num - 2) % 4] * 0.25 + img_buffer_array[(rotate_num - 3) % 4] * 0.25).astype(
            #     'uint8')
            # input_img = np.maximum.reduce([img_buffer_array[(rotate_num) % 4], img_buffer_array[(rotate_num - 1) % 4],
            #                                img_buffer_array[(rotate_num - 2) % 4],
            #                                img_buffer_array[(rotate_num - 3) % 4]]).astype('uint8')
            # input_img = input_img[:,:,0]
            # foldername = subdir[-19:]
            foldername = d
            filename = str(k2)
            i = 0

            lane_detection(input_img, original_img, i)

print("--- %s seconds ---" % (time.time() - start_time))