Azure Kinect ------ Multi Camera (Summary)

Multi Device Error

Error

在这里插入图片描述

Reason

因为capture是None,所以就新建了个Device,但是默认Device.capture是None,所以error
在这里插入图片描述

Solution

在调用tracker.update的时候,需要传入对应device的capture
device ------>self ,不然多相机的话,device共用一个内存块
在这里插入图片描述

Param: Only segments

调用函数时,默认值

draw_bodies(only_segments=True)

在这里插入图片描述

capture color image & concate

intro

拿capture的color image,然后concat到一起,所以理论上应该是两个相机看到的两个视角
在这里插入图片描述

Error

But 输出是同一个视角
在这里插入图片描述

Debug

在这里插入图片描述
device的内存地址不一样,说明device是两个,是不同设备,但是capture的内存地址是一样的,那么就是说两个capture共用一个device.capture,所以输出的color image是一样的

trace

进到update函数debug
在这里插入图片描述

第一个设备的device0.update()在这里插入图片描述

第二个设备的device1.update()
在这里插入图片描述

device.capture的内存地址,是同一个地址
每次update,他返回的都是同一个device.capture,虽然它的handler(color image的指针)不一样
在这里插入图片描述
capture0和capture1指向的device.capture都是同一个东西第一行,capture0 指向 device.capture,把device.capture赋值capture0的handler
(即capture0的handler给device.capture装到里面去)
第二行,capture1指向device.capture,把device.capture赋值capture1的handler
(即capture1的handler喂给device.capture)

现在capture0和capture1的handler都是capture1的handler了

把device.capture想象成一个盒子,capture0的handler是红球,capture1的handler是黑球。一开始红球放到了盒子里,后来,黑球放到了盒子里把红球给踢掉了

因为在代码里是靠Device.capture新建的,这个变成了全局变量,Device.capture的生存周期是整个主线程的周期
Device.capture在构造的时候就已经确定好内存块了

Source Control

git的source control 查看修改
在这里插入图片描述

Reference

https://learn.microsoft.com/en-us/answers/questions/1306098/azure-kinect-sdk-1-4-1-body-tracking-for-more-than

未完待续……

猜你喜欢

转载自blog.csdn.net/weixin_45646640/article/details/131827731
今日推荐