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

FigSpec FS-60CL

A lavoro mi hanno rifilato questo sensore iperspettrale cinese (pushbroom 400-1000 nm con larghezza di banda di 0.5 nm compatibile con DJI M...