403Webshell
Server IP : 185.11.201.71  /  Your IP : 192.168.7.18
Web Server : Apache/2.4.29 (Ubuntu)
System : Linux tech-virtual-machine 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64
User : tech ( 1000)
PHP Version : 7.4.28
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
MySQL : OFF  |  cURL : OFF  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /comunica/app_ojos_old/app/lib/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /comunica/app_ojos_old/app/lib/topografia.py
import cv2
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
import trimesh
from pythreejs import *
from IPython.display import display
import collada

class Topografia:
    def __init__(self) -> None:
        pass

    def contraste(self, img: np.ndarray) -> np.ndarray:
        return cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
    def porcentage(self, img: np.ndarray) -> float:
        gray = self.contraste(img)
        dim = np.shape(gray)
        cells = dim[0]*dim[1]
        return np.sum(gray) / (cells * 255)
    
    def model3D(self, grades: np.array) -> np.ndarray:
        n = grades.shape[0]
        x, y = np.meshgrid(np.arange(n), np.arange(n))
        z = grades
        print("A")

        vertices = np.stack((x.ravel(), y.ravel(), z.ravel()), axis=-1)
        print("B")

        i, j = np.meshgrid(np.arange(n - 1), np.arange(n - 1))
        i, j = i.ravel(), j.ravel()
        print("C")

        idx1 = i * n + j
        idx2 = idx1 + 1
        idx3 = idx1 + n
        idx4 = idx3 + 1
        print("D")

        faces = np.stack((idx1, idx2, idx3, idx2, idx4, idx3), axis=-1).reshape(-1, 3)
        print("E")

        mesh = trimesh.Trimesh(vertices=vertices, faces=faces)
        # Convertir los vértices y caras a los formatos necesarios para pycollada
        collada_faces = faces.flatten().astype(int)
        collada_vertices = vertices.flatten().astype(float)

        # Crear la escena COLLADA
        mesh_data = collada.Collada()
        
        # Definir el formato de los vértices
        vert_src = collada.source.FloatSource("verts-array", collada_vertices, ('X', 'Y', 'Z'))
        geom = collada.geometry.Geometry(mesh_data, "geometry0", "mygeom", [vert_src])
        
        # Definir las caras
        input_list = collada.source.InputList()
        input_list.addInput(0, 'VERTEX', "#verts-array")
        triset = geom.createTriangleSet(collada_faces, input_list)
        geom.primitives.append(triset)
        
        mesh_data.geometries.append(geom)

        # Crear un efecto simple
        effect = collada.material.Effect("effect0", [], "phong", diffuse=(0.8, 0.8, 0.8), specular=(0.5, 0.5, 0.5))
        mesh_data.effects.append(effect)
        
        # Crear el material usando el efecto
        mat = collada.material.Material("material0", "mymaterial", effect=effect)
        mesh_data.materials.append(mat)
        geomnode = collada.scene.GeometryNode(geom, [])
        node = collada.scene.Node("node0", children=[geomnode])
        myscene = collada.scene.Scene("myscene", [node])
        mesh_data.scenes.append(myscene)
        mesh_data.scene = myscene

        # Exportar a .dae
        mesh_data.write('surface.dae')
        print("Exportación a surface.dae completada.")
        return


        fig = plt.figure()
        ax = fig.add_subplot(111, projection='3d')

        # Graficar la superficie
        surf = ax.plot_surface(x, y, grades, cmap=cm.coolwarm, linewidth=0, antialiased=False)
        fig.colorbar(surf, ax=ax, shrink=0.6, aspect=5)

        # Añadir etiquetas a los ejes
        ax.set_xlabel('X')
        ax.set_ylabel('Y')
        ax.set_zlabel('Z')

        plt.savefig("app/log/top.png")


if __name__ == '__main__':
    # import sys
    # import os
    # sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..')))
    # from app.lib.colorimetria import Colorimetria

    from colorimetria import Colorimetria

    c = Colorimetria()
    path = "base/img.png"
    img = cv2.imread(path)
    matrix = c.get_grade_image(img)+1

    t = Topografia()
    t.model3D(matrix)
    exit()



    cv2.imwrite("log/topografia.png", t.contraste())
    print(t.porcentage())

Youez - 2016 - github.com/yon3zu
LinuXploit