def find_lane(self): img = self.img if self.last_frame and self.last_valid_left_lane_found < 12 and self.last_valid_right_lane_found < 12: nonzero, left_lane_inds, right_lane_inds = self._extrapolate_from_last_frame( ) else: nonzero, left_lane_inds, right_lane_inds = self._sliding_window() nonzerox = np.array(nonzero[1]) nonzeroy = np.array(nonzero[0]) # Extract left and right line pixel positions leftx = nonzerox[left_lane_inds] lefty = nonzeroy[left_lane_inds] rightx = nonzerox[right_lane_inds] righty = nonzeroy[right_lane_inds] if len(leftx) == 0: print('no left lane') if len(rightx) == 0: print('not right lane') # Fit a second order polynomial to each left_fit_polynomial = np.polyfit(lefty, leftx, 2) right_fit_polynomial = np.polyfit(righty, rightx, 2) # Generate x and y values for plotting left_fitx, right_fitx, left_fity, right_fity = self._fit_polynomial_to_lane_data( left_fit_polynomial, right_fit_polynomial) left_lane = Lane(leftx, lefty, left_fit_polynomial, left_fitx, left_fity) right_lane = Lane(rightx, righty, right_fit_polynomial, right_fitx, right_fity) if left_lane.calculate_curvature() < 195: # import ipdb; ipdb.set_trace() left_lane = self.last_frame.left_lane if self.last_frame else None self.last_valid_left_lane_found += 1 else: self.last_valid_left_lane_found = 0 if right_lane.calculate_curvature() < 195: # import ipdb; ipdb.set_trace() right_lane = self.last_frame.right_lane if self.last_frame else None self.last_valid_right_lane_found += 1 else: self.last_valid_right_lane_found = 0 return left_lane, right_lane