mercoledì 22 dicembre 2021

PFM2PLY

Un programmino un Python per convertire le mappe di profondita' di MiDaS dal formato PFM al formato PLY (GitHub)




import utils
import pandas as pd
import numpy as np
from PIL import Image
from plyfile import PlyData, PlyElement

immagine = 'firenze-aerea'
molt = 20

ottico = Image.open(immagine+'.jpeg')
ottico = ottico.convert('RGB')
(data,scale) = utils.read_pfm(immagine+'.pfm')
df = pd.DataFrame(data)

x = np.zeros(ottico.width*ottico.height)
y = np.zeros(ottico.width*ottico.height)
z = np.zeros(ottico.width*ottico.height)
red = np.zeros(ottico.width*ottico.height)
green = np.zeros(ottico.width*ottico.height)
blue = np.zeros(ottico.width*ottico.height)

posizione = 0

for j in range (1,ottico.width):
for k in range (1,ottico.height):
RGB = ottico.getpixel((ottico.width-j,ottico.height-k))
x[posizione] = k
y[posizione] = j
z[posizione] = df.values[k,j]*molt
red[posizione] = RGB[0]
green[posizione] = RGB[1]
blue[posizione] = RGB[2]
posizione = posizione+1

vertices = np.empty(ottico.width*ottico.height, dtype=[('x', 'f4'), ('y', 'f4'), ('z', 'f4'), ('red', 'u1'), ('green', 'u1'), ('blue', 'u1')])
vertices['x'] = x.astype('f4')
vertices['y'] = y.astype('f4')
vertices['z'] = z.astype('f4')
vertices['red'] = red.astype('u1')
vertices['green'] = green.astype('u1')
vertices['blue'] = blue.astype('u1')

ply = PlyData([PlyElement.describe(vertices, 'vertex')], text=False)
ply.write(immagine+".ply")

Nessun commento:

Posta un commento

Nvidia Dev Env con Docker e Visual Code

Mi sono comprato un vecchio portatile MSI con una NVidia GeForce GTX 860M che supporta i driver 580.178.04 Cuda 13 La scheda video e' mo...