50 lines
1.8 KiB
Python
50 lines
1.8 KiB
Python
import cv2
|
|
import os
|
|
import numpy as np
|
|
|
|
def load_normal(path, binocular=False, left_only=False):
|
|
if binocular and not left_only:
|
|
normal_path_L = os.path.join(
|
|
os.path.dirname(path), "normal", os.path.basename(path) + "_L.png"
|
|
)
|
|
normal_image_L = cv2.imread(normal_path_L, cv2.IMREAD_UNCHANGED)
|
|
normal_path_R = os.path.join(
|
|
os.path.dirname(path), "normal", os.path.basename(path) + "_R.png"
|
|
)
|
|
normal_image_R = cv2.imread(normal_path_R, cv2.IMREAD_UNCHANGED)
|
|
normalized_normal_image_L = normal_image_L / 255.0 * 2.0 - 1.0
|
|
normalized_normal_image_R = normal_image_R / 255.0 * 2.0 - 1.0
|
|
return normalized_normal_image_L, normalized_normal_image_R
|
|
else:
|
|
if binocular and left_only:
|
|
normal_path = os.path.join(
|
|
os.path.dirname(path), "normal", os.path.basename(path) + "_L.png"
|
|
)
|
|
else:
|
|
normal_path = os.path.join(
|
|
os.path.dirname(path), "normal", os.path.basename(path) + ".png"
|
|
)
|
|
normal_image = cv2.imread(normal_path, cv2.IMREAD_UNCHANGED)
|
|
normalized_normal_image = normal_image / 255.0 * 2.0 - 1.0
|
|
return normalized_normal_image
|
|
|
|
def show_rgb(event, x, y, flags, param):
|
|
if event == cv2.EVENT_MOUSEMOVE:
|
|
pixel_value = param[y, x]
|
|
print(f"RGB at ({x},{y}): {pixel_value}")
|
|
|
|
if __name__ == "__main__":
|
|
path = "/Users/hofee/temp/1"
|
|
normal_image = load_normal(path, binocular=True, left_only=True)
|
|
display_image = ((normal_image + 1.0) / 2.0 * 255).astype(np.uint8)
|
|
|
|
cv2.namedWindow("Normal Image")
|
|
cv2.setMouseCallback("Normal Image", show_rgb, param=display_image)
|
|
|
|
while True:
|
|
cv2.imshow("Normal Image", display_image)
|
|
if cv2.waitKey(1) & 0xFF == ord('q'):
|
|
break
|
|
|
|
cv2.destroyAllWindows()
|