我正在使用OpenCV 4.0.0通过cv2模块中的Python绑定进行图像处理。我使用了cProfile库,该库告诉我(显然)我直接调用的OpenCV函数占用的时间最多,但是看不到更深的内容,因为它们是从编译的库中调用C ++函数的。我想剖析OpenCV代码,以确定哪些函数占用了大部分执行时间。
我尝试使用here描述的内置OpenCV分析,但收到警告
[ WARN:0] Trace: Total skipped events: 2117
,没有OpenCVTrace.txt。我已经尝试过"yep" module on pypi,它包装了google-perftools,但是却出现了here所述的错误行为,因此建议的修复对我不起作用。我试过了ltrace和latrace,但似乎都坏了。我不确定下一步该怎么做,或者这是否可能完成。
对于某些背景,此代码适用于我在大学期间的高级设计项目。我正在用在Zynq-7000 SOC的ARM处理器上运行的OpenCV来实现面部检测/识别,然后使用FPGA架构来加速瓶颈。当然,这取决于能够通过分析来识别热点。
答案 0 :(得分:0)
我使用perf
工具取得了成功,该工具使我知道哪些功能花费的时间最多。特别是在我的Pynq板上,该可执行文件位于/usr/lib/linux-tools-4.15.0-20中,默认情况下不在PATH中。我还使用FlameGraph来出色地显示调用图。