Panda3d отображает окно в массив - PullRequest
0 голосов
/ 05 июня 2019

Я следовал этой теме , чтобы попытаться получить данные буфера с камеры и сохранить их в виде массива. Следуя теме, я повторно использовал этот код

base.graphicsEngine.renderFrame()
dr = base.camNode.getDisplayRegion(0)
tex = dr.getScreenshot()
data = tex.getRamImage()
image = np.frombuffer(data,np.uint8)
image.shape = (tex.getYSize(),tex.getXSize(),tex.getNumComponents())
print(image)

однако я получаю эту ошибку

Файл "main.py", строка 137, в init image = np.frombuffer (data, np.uint8) AttributeError: у объекта 'panda3d.core.ConstPointerToArray_unsigned_char' нет атрибута ' buffer '

Любой совет?

1 Ответ

0 голосов
/ 06 июня 2019

Решил это, изменив исходный код на следующее:

base.graphicsEngine.renderFrame()
dr = base.camNode.getDisplayRegion(0)
tex = dr.getScreenshot()
data = tex.getRamImage()
v = memoryview(data).tolist()
img = np.array(v,dtype=np.uint8)
img = img.reshape((tex.getYSize(),tex.getXSize(),4))
img = img[::-1]
cv2.imshow('img',img)
cv2.waitKey(0)

Изображение переворачивается по любой причине после изменения формы массива с отсечкой, отсюда и третья строка снизу.Вы должны увидеть идентичное изображение того, что видит ваша камера, когда вы запускаете этот фрагмент в качестве ключа подтверждения или чего-то еще.Надеюсь, что это помогает кому-то, имеющему те же проблемы.

...