繁体   English   中英

多线程中的OpenCV CascadeClassifier C ++接口

[英]OpenCV CascadeClassifier C++ Interface in Multiple Threads

我想在多个线程中使用CascadeClassifier对象运行OpenCV C ++接口。

我的程序工作方式是我的主线程将“some_file.xml”加载到CascadeClassifier对象中。 产生三个或更多线程,并将它们传递给级联对象。 该计划很快就崩溃了。 我做了几个测试并得出结论,当执行“detectmultiscale”函数时,CascadeClassifier对象不是线程安全的。

每次生成新线程时,我都希望避免从硬盘驱动器中读取相同的文件。 如何避免这种情况?

如果您正在使用以新格式存储的Haar级联的LBP级联,那么您可以避免为每个新线程从文件系统中读取级联:

将级联加载到内存中:

cv::FileStorage fs(path_to_cascade_file, cv::FileStorage::READ);
if (!fs.isOpened())
    HandleError();

接下来将fs对象传递给每个新线程并创建CascadeClassifier对象:

cv::CascadeClassifier cc;
if (!cc.read(fs.getFirstTopLevelNode())
    HandleError2();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM