mirror of
https://github.com/NohamR/Stage-2023.git
synced 2026-01-11 08:38:13 +00:00
changes
This commit is contained in:
BIN
cameratransform/google.png
Normal file
BIN
cameratransform/google.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.3 MiB |
58
cameratransform/topview.py
Normal file
58
cameratransform/topview.py
Normal file
@@ -0,0 +1,58 @@
|
||||
import matplotlib.pyplot as plt
|
||||
import matplotlib.image as mpimg
|
||||
import numpy as np
|
||||
|
||||
image_path = "cameratransform/google.png"
|
||||
|
||||
from scipy.ndimage import map_coordinates
|
||||
|
||||
def simulate_top_view(image_path, inclination=0, rotation=0):
|
||||
# Charger l'image
|
||||
img = mpimg.imread(image_path)
|
||||
|
||||
# Dimensions de l'image
|
||||
height, width, _ = img.shape
|
||||
|
||||
# Créer une grille d'indices pour les pixels de l'image
|
||||
y, x = np.indices((height, width))
|
||||
|
||||
# Convertir les coordonnées x, y en coordonnées polaires
|
||||
r = np.sqrt((x - width / 2) ** 2 + (y - height / 2) ** 2)
|
||||
theta = np.arctan2(y - height / 2, x - width / 2)
|
||||
|
||||
# Ajuster l'inclinaison et la rotation
|
||||
r_adjusted = r * np.cos(np.deg2rad(inclination))
|
||||
theta_adjusted = theta + np.deg2rad(rotation)
|
||||
|
||||
# Convertir les coordonnées polaires ajustées en coordonnées cartésiennes
|
||||
x_adjusted = width / 2 + r_adjusted * np.cos(theta_adjusted)
|
||||
y_adjusted = height / 2 + r_adjusted * np.sin(theta_adjusted)
|
||||
|
||||
# Interpolation bilinéaire pour obtenir les nouvelles valeurs de pixel
|
||||
coordinates = np.vstack((y_adjusted.flatten(), x_adjusted.flatten()))
|
||||
simulated_img = np.zeros_like(img)
|
||||
for c in range(3): # Canal de couleur (R, G, B)
|
||||
simulated_img[:, :, c] = map_coordinates(img[:, :, c], coordinates, order=1).reshape(img.shape[:2])
|
||||
|
||||
return simulated_img
|
||||
|
||||
# Chemin vers votre image
|
||||
|
||||
# Paramètres de simulation (inclinaison et rotation en degrés)
|
||||
inclination_degrees = 30
|
||||
rotation_degrees = 45
|
||||
|
||||
# Simulation de la vue de dessus avec les paramètres donnés
|
||||
simulated_image = simulate_top_view(image_path, inclination=inclination_degrees, rotation=rotation_degrees)
|
||||
|
||||
# Afficher l'image originale et l'image simulée côte à côte
|
||||
fig, axes = plt.subplots(1, 2, figsize=(10, 5))
|
||||
axes[0].imshow(mpimg.imread(image_path))
|
||||
axes[0].set_title("Image originale")
|
||||
axes[0].axis("off")
|
||||
|
||||
axes[1].imshow(simulated_image)
|
||||
axes[1].set_title("Vue de dessus simulée")
|
||||
axes[1].axis("off")
|
||||
|
||||
plt.show()
|
||||
Reference in New Issue
Block a user