N久以前opencv人脸检测出错,记一次std::vector的大坑

时间:2022-08-09 18:15:42

其实这个坑已经久就知道了,今天刚好想到顺便记一下吧,因为给碰到这个坑的人一点思路。最早接触到这个大坑的是在使用opencv的时候,当初我的visual studio 版本是2015 的但是我用的是vs2013的opencv库,在使用opencv自带人脸识别函数的时候碰到了。出栈软件崩溃的问题,这个问题是发生在debug的模式下, 大概就是析构的时候参数检测出错,经过一系列的排插跟踪到了是vector作为参数的调用引发的,但是无论是谷歌或者百度都早不到合适的解决方案,并且这个问题在后来的一些新手opencv交流群也有人不断碰到过。其实出现这问题的原因是 ,不同版本的vector 都有不同程度的优化或者变动,并不是每个版本都一样的,好比如 debug模式下 的vector 跟release的vector是完全不一样的,debug有很多的参数检测 越界检测 ,异常检测。所以在使用含有vector作为参数调用的时候 动态库最好是由当前编译器编译出来的,否则会出现一堆的坑。还有 很多人使用opencv findcontours函数的时候有时候也会碰到一直出错,原因可能也跟这个有关,没有研究过,在此只是提供一个可能引发此问题的原因。