0

我制作了一个基于此处找到的 affdex git 页面上的演示程序的程序。这是一个名为“opencv-webcam-demo”的演示。我当时正在运行 Ubuntu 14.04,它运行良好。然后我升级到 Ubuntu 16.04,现在演示(即使没有我的更改)无法正常运行。我尝试安装最新版本的 opencv 和 boost 并确认它们已正确安装,但我仍然遇到同样的问题。

这是我在 Ubuntu 16.04 中运行程序时的输出:

ethan@ethan-HP-Pavilion-dv6-Notebook-PC:~/leepsProgram/build/opencv-webcam-demo$ ./opencv-webcam-demo --help
Hit ESCAPE key to exit app..
Encountered an exception std::exception*** Error in `./opencv-webcam-demo': free(): invalid pointer: 0x0000000001c71ca8 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x77725)[0x7f0ce2798725]
/lib/x86_64-linux-gnu/libc.so.6(+0x7ff4a)[0x7f0ce27a0f4a]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7f0ce27a4abc]
./opencv-webcam-demo(_ZN5boost10filesystem4pathD1Ev+0x18)[0x469c86]
/lib/x86_64-linux-gnu/libc.so.6(__cxa_finalize+0x9a)[0x7f0ce275b35a]
/home/ethan/libraries/affdex-sdk/lib/libaffdex-native.so(+0x5273a3)[0x7f0ce642a3a3]

还有一个内存映射,如果有帮助,请告诉我,我也可以将其粘贴到这里。

到目前为止,我试图弄清楚代码的哪些部分有效,哪些部分无效,并发现如果您从程序中删除 boost,它将一直到达,直到 Affdex 必须指定数据文件夹的路径,在这一点它会抛出一个 Affdex 异常,说数据路径必须是非空的。但是它不应该为空,因为我在一开始就设置了它。

affdex::path DATA_FOLDER = "<path to data folder>";
...
frameDetector->setClassifierPath(DATA_FOLDER);

尽管如此,删除 boost 并不理想,因为它已经为我编码了。但是,如果我必须删除 boost,那么我也必须解决这个问题。

库及其版本/操作系统版本:

  • 提升 1.59.0

  • OpenCV 3.1.0

  • Affdex 3.1-396

  • Ubuntu 16.04

这些库是否与 Ubuntu 16.04 兼容?

谢谢你的帮助。非常感谢。

4

2 回答 2

1

我认为问题在于您将库与使用不兼容版本的 libstdc++ 编译的库混合在一起。您使用的编译器版本是什么?

当前版本的 linux SDK 是用 GCC 4.8 编译的

于 2016-09-08T22:37:21.143 回答
0

更新:我已经通过将 SDK 版本更新到最新版本来解决这个问题(https://download.affectiva.com/linux/gcc-5.4/affdex-cpp-sdk-4.0-75-ubuntu-xenial-xerus-x86_64bit。 tar.gz)。

本教程提供了旧版本:

wget https://download.affectiva.com/linux/affdex-cpp-sdk-3.2-20-ubuntu-xenial-xerus-64bit.tar.gz

我有类似的问题,有类似的错误日志。请考虑升级或找到更好的方法到 C++ 示例版本。许多人尝试使用相同的 C++ 代码进行测试。我浪费了很多时间来弄清楚为什么?

Debugging starts
Hit ESCAPE key to exit app..
Initializing Affdex FrameDetector
*** Error in `/home/aiq/Desktop/aiq_workspace/cpp-sdk-samples/build/opencv-webcam-demo/opencv-webcam-demo': munmap_chunk(): invalid pointer: 0x0000000000856e10 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7ffff582c7e5]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x1a8)[0x7ffff5839698]
/home/aiq/Desktop/aiq_workspace/cpp-sdk-samples/build/opencv-webcam-demo/opencv-webcam-demo(_ZN5boost10filesystem4pathD1Ev+0x18)[0x467948]
/home/aiq/Desktop/aiq_workspace/affdex-sdk/lib/libaffdex-native.so(_ZN6affdex12DetectorBase17setClassifierPathERKSs+0xc6)[0x7ffff6f5061a]
/home/aiq/Desktop/aiq_workspace/affdex-sdk/lib/libaffdex-native.so(_ZN6affdex8Detector17setClassifierPathERKSs+0x2f)[0x7ffff6f4abb1]
/home/aiq/Desktop/aiq_workspace/cpp-sdk-samples/build/opencv-webcam-demo/opencv-webcam-demo(main+0xaed)[0x466110]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7ffff57d5830]
/home/aiq/Desktop/aiq_workspace/cpp-sdk-samples/build/opencv-webcam-demo/opencv-webcam-demo(_start+0x29)[0x465209]

请调查问题。评论不需要很长的答案,所以我在这里发布作为答案。

于 2018-01-03T06:36:38.220 回答