[英]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.