gpt4 book ai didi

visual-c++ - 在 OpenCV 中使用线程进行多标记检测

转载 作者:太空宇宙 更新时间:2023-11-03 21:48:19 25 4
gpt4 key购买 nike

我正在从事一个增强现实项目,在该项目中我必须使用 OpenCV 进行“多标记检测 + 识别”。我在 Windows 上,Visual C++ 2008。我已经完成了单线程部分。

我想知道 OpenCV 中是否已经有任何线程机制可以用来完成类似的任务。还有什么其他方法我可以考虑?

我还希望在叠加 3D 模型时使用为每个标记生成的旋转和平移矩阵(使用 OpenCV)。有没有更好的方法来组织/保存这些数据?

编辑:

这适用于效率和其他问题并不那么重要的学术项目。只要它是一个有效的解决方案,它就非常好。

最佳答案

您可以将 Boost 库与并发队列结合使用。在这里你可以找到一个 concurrent queue我与 boost 线程和 OpenCV 一起工作。

要在 OpenCV 中使用并发队列,您可以像这样将其线程化:

    boost::thread_group frame_workers;   
concurrent_queue<IplImage* > frame_queue(&frame_workers);

boost::thread * frame_thread = new boost::thread(frame_grabber, &frame_queue);
boost::thread * marker_thread = new boost::thread(marker_handler, &frame_queue);

frame_workers.add_thread(frame_thread);
frame_workers.add_thread(marker_thread);

在 frame_grabber 函数中,您可以抓取帧并将它们插入 frame_queue。执行此操作时,会通知 marker_thread 队列中有一个帧在等待(使用 wait_and_pop)。抓取部分的一个简短示例可以是这样的:

 void frame_grabber(concurrent_queue<IplImage* > * frame_queue) {
frame = cvQueryFrame(input_video);
frame_copy = cvCreateImage(cvGetSize(frame), 8, 3);
cvCopy(frame, frame_copy);
frame_queue->push(frame);
}

关于visual-c++ - 在 OpenCV 中使用线程进行多标记检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8152771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com