如何用Opencv在Pandas3d中投影一个摄像头“颜色纹理”?Python

2024-09-29 06:25:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在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基本上是高度和宽度(480640)

我的纹理存储

    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


Tags: selfnode视频returndefrenderframetex