Programming/python(파이썬)
matplotlib grayscale image to 3d graph
구차니
2024. 2. 22. 19:19
matplotlib을 이용하여 lena를 3d로 그리는게 보이길래 해보려는데
아래와 같이 deprecated 경고만 발생해서 되는걸 못 찾다가
>>> ax = fig.gca(projection='3d') <stdin>:1: MatplotlibDeprecationWarning: Calling gca() with keyword arguments was deprecated in Matplotlib 3.4. Starting two minor releases later, gca() will take no keyword arguments. The gca() function should only be used to get the current axes, or if no axes exist, create new axes with default keyword arguments. To create a new axes with non-default arguments, use plt.axes() or plt.subplot(). >>> ax= Axes3D(fig) <stdin>:1: MatplotlibDeprecationWarning: Axes3D(fig) adding itself to the figure is deprecated since 3.4. Pass the keyword argument auto_add_to_figure=False and use fig.add_axes(ax) to suppress this warning. The default value of auto_add_to_figure will change to False in mpl3.5 and True values will no longer work in 3.6. This is consistent with other Axes classes. |
chatGPT에게 물어보니 아래와 같이 줘서 시도하니 나오긴 나온다.
import cv2 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # 이미지 읽기 image_path = 't.png' img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE) # 이미지의 높이와 너비 얻기 height, width = img.shape # 2D 배열을 생성하여 각 픽셀의 깊이 값을 저장 depth_map = np.zeros_like(img, dtype=np.float32) # 각 픽셀의 깊이 계산 (여기서는 그레이스케일 값으로 대체) depth_map = img.astype(np.float32) # 3D 그래프 생성 fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # X, Y 좌표 생성 x = np.arange(0, width, 1) y = np.arange(0, height, 1) x, y = np.meshgrid(x, y) # 깊이 맵을 사용하여 Z 좌표 생성 z = depth_map # 3D 그래프에 표시 ax.plot_surface(x, y, z, cmap='viridis') # 그래프 표시 plt.show() |
분위기를 보아하니 viridis 를 해서 저런 녹색톤이 나오는것 같은데 plasms가 웬지 flir에서 보던 느런 느낌이려나?
[링크 : https://matplotlib.org/stable/users/explain/colors/colormaps.html]
위에서 보면 아래와 같이 lena 이미지가 똭!
[링크 : https://jehyunlee.github.io/2021/07/10/Python-DS-80-mpl3d2/]