OpenCV号称线程安全,但是级联检测器CascadeClassifier中的detectMultiScale方法并不是线程安全的,但是在这个方法的内部用了TBB进行并行加速。
OpenCV官方论坛上有个帖子讨论这个问题:点击打开链接 ,帖子是两年前发的,还没有官方回应。
这个帖子给出了避免从文件系统中多次读取XML文件初始化CascadeClassifer对象的法:点击打开链接
如果想要多线程调用,只有每个线程绑定一个CascadeClassifer对象,当然这里推荐使用对象池模型,这样可以实现线程和对象的解耦合。