|
|
@ -147,29 +147,13 @@ def pretransform_from_calib(calib): |
|
|
|
camera_frame_from_calib_frame = get_camera_frame_from_calib_frame(camera_frame_from_road_frame) |
|
|
|
camera_frame_from_calib_frame = get_camera_frame_from_calib_frame(camera_frame_from_road_frame) |
|
|
|
return np.linalg.inv(camera_frame_from_calib_frame) |
|
|
|
return np.linalg.inv(camera_frame_from_calib_frame) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def transform_img_M(size, |
|
|
|
def transform_img(base_img, |
|
|
|
augment_trans=np.array([0,0,0]), |
|
|
|
augment_trans=np.array([0,0,0]), |
|
|
|
augment_eulers=np.array([0,0,0]), |
|
|
|
augment_eulers=np.array([0,0,0]), |
|
|
|
from_intr=eon_intrinsics, |
|
|
|
from_intr=eon_intrinsics, |
|
|
|
to_intr=eon_intrinsics, |
|
|
|
to_intr=eon_intrinsics, |
|
|
|
pretransform=None): |
|
|
|
output_size=None, |
|
|
|
|
|
|
|
pretransform=None, |
|
|
|
|
|
|
|
top_hacks=False, |
|
|
|
|
|
|
|
yuv=False, |
|
|
|
|
|
|
|
alpha=1.0, |
|
|
|
|
|
|
|
beta=0, |
|
|
|
|
|
|
|
blur=0): |
|
|
|
|
|
|
|
import cv2 # pylint: disable=import-error |
|
|
|
import cv2 # pylint: disable=import-error |
|
|
|
cv2.setNumThreads(1) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if yuv: |
|
|
|
|
|
|
|
base_img = cv2.cvtColor(base_img, cv2.COLOR_YUV2RGB_I420) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
size = base_img.shape[:2] |
|
|
|
|
|
|
|
if not output_size: |
|
|
|
|
|
|
|
output_size = size[::-1] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cy = from_intr[1,2] |
|
|
|
cy = from_intr[1,2] |
|
|
|
def get_M(h=1.22): |
|
|
|
def get_M(h=1.22): |
|
|
|
quadrangle = np.array([[0, cy + 20], |
|
|
|
quadrangle = np.array([[0, cy + 20], |
|
|
@ -192,14 +176,31 @@ def transform_img(base_img, |
|
|
|
M = get_M() |
|
|
|
M = get_M() |
|
|
|
if pretransform is not None: |
|
|
|
if pretransform is not None: |
|
|
|
M = M.dot(pretransform) |
|
|
|
M = M.dot(pretransform) |
|
|
|
augmented_rgb = cv2.warpPerspective(base_img, M, output_size, borderMode=cv2.BORDER_REPLICATE) |
|
|
|
return M |
|
|
|
|
|
|
|
|
|
|
|
if top_hacks: |
|
|
|
def transform_img(base_img, |
|
|
|
cyy = int(math.ceil(to_intr[1,2])) |
|
|
|
augment_trans=np.array([0,0,0]), |
|
|
|
M = get_M(1000) |
|
|
|
augment_eulers=np.array([0,0,0]), |
|
|
|
if pretransform is not None: |
|
|
|
from_intr=eon_intrinsics, |
|
|
|
M = M.dot(pretransform) |
|
|
|
to_intr=eon_intrinsics, |
|
|
|
augmented_rgb[:cyy] = cv2.warpPerspective(base_img, M, (output_size[0], cyy), borderMode=cv2.BORDER_REPLICATE) |
|
|
|
output_size=None, |
|
|
|
|
|
|
|
pretransform=None, |
|
|
|
|
|
|
|
yuv=False, |
|
|
|
|
|
|
|
alpha=1.0, |
|
|
|
|
|
|
|
beta=0, |
|
|
|
|
|
|
|
blur=0): |
|
|
|
|
|
|
|
import cv2 # pylint: disable=import-error |
|
|
|
|
|
|
|
cv2.setNumThreads(1) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if yuv: |
|
|
|
|
|
|
|
base_img = cv2.cvtColor(base_img, cv2.COLOR_YUV2RGB_I420) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
size = base_img.shape[:2] |
|
|
|
|
|
|
|
if not output_size: |
|
|
|
|
|
|
|
output_size = size[::-1] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
M = transform_img_M(size, augment_trans, augment_eulers, from_intr, to_intr, pretransform) |
|
|
|
|
|
|
|
augmented_rgb = cv2.warpPerspective(base_img, M, output_size, borderMode=cv2.BORDER_REPLICATE) |
|
|
|
|
|
|
|
|
|
|
|
# brightness and contrast augment |
|
|
|
# brightness and contrast augment |
|
|
|
augmented_rgb = np.clip((float(alpha)*augmented_rgb + beta), 0, 255).astype(np.uint8) |
|
|
|
augmented_rgb = np.clip((float(alpha)*augmented_rgb + beta), 0, 255).astype(np.uint8) |
|
|
|