我正在使用Opencv,试图复制从网络摄像机捕获的某些帧。复制框架时,我在__memcpy_ssse3(),行160或1675中遇到分段错误。

gdb显示:



调用它的函数是cv::MAt::Mat(IplImg *I, bool copy)

当我打开USB摄像头或文件时,一切都很完美,但是当尝试通过IP从网络摄像头读取视频流时,它在一分钟后崩溃。

我将尝试在不支持ssse3的情况下构建ffmpeg和opencv,我的应用程序也将使用-mno-seee3标志进行编译。

Opencv vesion是2.4.2,但是该问题也存在于2.3.1中。
ffmpeg版本是11.1,在8.X中是同样的问题。
gcc版本是4.6.3,Ubuntu的分支。
处理器为Intel core2。

有什么提示吗?

最佳答案

SSE操作中的分段错误是由于内存未对齐引起的。尝试传递-mpreferred-stack-boundary=4 -mstackrealign以查看是否可以清除它。如果是这样,则需要检查堆栈以找出哪些代码未对齐。

关于c++ - __memcpy_ssse3()段错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11507675/

10-16 05:17