我正在使用C和OpenCV来实时处理从网络摄像头拍摄的一些图像,我正在寻求从我的系统获得最佳速度.
除了改变处理算法(假设现在,你不能改变它).我应该做什么来最大限度地提高加工速度?
我在想,也许多线程可以帮助在这里,但我很ash愧,我不知道的内在和外部(虽然显然我以前使用多线程,但不是在C).
假设我有一个x核处理器,将处理分解成x线程实际上会加快速度?或者这些线程的管理开销会否定它,假设我正在寻找20fps的吞吐量(我认为会影响你给出的答案应该给你指出每个线程将执行多少处理)
多线程在这里有帮助吗?
有没有提高OpenCV的速度,特别是任何陷阱,我可能会陷入降低速度.
谢谢.
解决方法
我认为更简单的方法可能是流水线框架操作.
您可以使用线程池,按顺序将帧存储器缓冲区分配给第一个可用线程,以便在关联帧上的算法步骤完成时释放到池中.
这可能几乎保持现有的(调试:)算法,但是需要大量更多的内存来缓冲中间结果.
当然,没有关于你的任务的细节,很难说如果这是适当的…