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
未完待续……