对于我正在开发的项目,我使用两个不同的线程来使用Opencv和C++从Windows系统上的不同硬件获取图像。为了本文的目的,我们将它们称为camera1和camera2。由于帧速率不同,我无法在同一个线程上同时从camera1和camera2中捕获这两个帧,也无法一次捕获一个图像。相反,我为两台摄像机都设置了缓冲区。 Camera1的运行速度是camera2的两倍以上。基于从两个不同线程获取的时间戳匹配图像
第三个线程从camera2获取一帧,并尝试将它与camera1在最近时间点拍摄的图像进行匹配。我遇到的问题是,我无法找到一种很好的方法来将来自一个源的图像与另一个源中几乎同时获取的图像进行匹配。
是否有一种方法为这些图像分配时间戳,这些图像在高优先级的单独线程中使用时是准确的?如果没有,是否还有另一种更适合这种系统的设计方法。
我很难找到任何有关在不同的CPUS上使用不同线程的时间(如clock()和queryperformancecounter)跟踪时间的方法有多远的信息。我已经读过,它们在单独的线程中使用时不准确,但我以大约每秒20帧的速度获取帧,所以即使它们关闭,它也可能足够接近以保持良好工作。
预先感谢您!让我知道,如果我应该清除任何事情或更好地解释。
编辑:
不幸的是,我不认为有什么办法,我得从驱动程序或硬件时间戳。我想我已经想出了一种方法来非常准确地确定图像实际上是相对于每个线程捕获的。我并不真正知道如何处理的部分是,如果我在两个线程中使用clock()或类似的方法来执行单独的核心,那么时间戳记可能离多远。如果我可以指望两个不同核心的时间戳距离彼此约25ms以内,那将是理想的。我只是无法找出衡量两者之间差异的好方法。我已经做了一些更多的研究,看起来Windows API中的timeGetTime不会受到独立cpu核心调用的太多影响。我会尝试一下。