Как спроектировать веб-камеру «цветная текстура» в Panda3d с помощью Opencv?питон - PullRequest
0 голосов
/ 28 сентября 2019

Я пытаюсь спроектировать живое видео с веб-камеры в качестве текстуры в Panda3D.Но изображение нечеткое и создается несправедливое количество шума.

Я могу получить точное и быстрое видео в оттенках серого / черно-белом.

Здесь мне нужно проецировать:

def room_maker(self):
    room = self.loader.loadModel("location_of_model")
    room.reparentTo(self.render)
    room.setScale(1, 1, 0.8)
    room.setPos(5, 1, 3)
    room.set_hpr(360, 0, 0)
    return room

Это мой проектор

def projector(self):
    proj = self.render.attachNewNode(LensNode('proj'))
    lens = PerspectiveLens()
    proj.node().setLens(lens)
    proj.node().showFrustum()
    proj.find('frustum').setColor(1, 0, 0, 1)
    proj.reparentTo(self.camera)
    return proj

Моя текстура настроена:

def my_setTexture(self):
    tex = Texture()
    tex.setWrapU(SamplerState.WMBorderColor)
    tex.setWrapV(SamplerState.WMBorderColor)
    tex.setup2dTexture(self.h, self.w,
    Texture.T_unsigned_byte, Texture.FRgb)
    return tex

self.h и self.w - это высота и ширина (480, 640)

Мое хранилище текстур

    self.ts = TextureStage('ts')
    self.ts.setSort(1)

И это в основном цикл, который обновляет текстуру и использует opencv

def updateTex(self, task):
    success, frame = self.cap.read()

    frame = cv2.flip(frame, 0)

    self.tex.setRamImage(frame)  
    # overwriting the memory with new buffer
    self.room.projectTexture(self.ts, self.tex, self.proj)
    # now apply it to the card
    return task.cont

Мне нужно четкое живое видео, воспроизводимое на модели в качестве текстуры,Но результат я получаю размытым и шумным.

Мой вывод:

myoutput

...