DefTruth / RVM-Inference

🔥Robust Video Matting C++ inference toolkit with ONNXRuntime、MNN、NCNN and TNN, via lite.ai.toolkit.
GNU General Public License v3.0
116 stars 27 forks source link

Linux下sh ./build.sh报错 #31

Closed Richardlyq closed 2 years ago

Richardlyq commented 2 years ago

作者您好,我已经将lite.ai.toolkit编译成功了,并且把其中的build/lite.ai.toolkit替换了RobustVideoMatting.lite.ai.toolkit中的lite.ai.toolkit。但是sh ./build.sh后会报如下错误,请问怎么解决呢 image

DefTruth commented 2 years ago

因为你在编linux库的时候没有编MNN和NCNN以及TNN,但是我的CMakeLists.txt里面链接了。你需要根据你实际的情况修改CMakeLists.txt。

file(GLOB ALL_LIBS ${LITE_AI_LIBRARY_DIR}/*so)   # 将dylib修改为so,linux下是so
file(INSTALL ${ALL_LIBS} DESTINATION ${EXECUTABLE_OUTPUT_PATH})

add_executable(lite_rvm examples/test_lite_rvm.cpp)
# 把MNN/NCNN/TNN的库都去掉,因为你没有编
target_link_libraries(lite_rvm
        lite.ai.toolkit
        onnxruntime
        ${OpenCV_LIBS})  # link lite.ai.toolkit & other libs.
Richardlyq commented 2 years ago

老哥,这个can not open video是代码问题嘛? image

DefTruth commented 2 years ago

就是打开视频出现错误。你检查一下视频在不在

Richardlyq commented 2 years ago

我打开文件中存在的视频也报这样的错

DefTruth commented 2 years ago

CMakeLists改一下吧,你其实可以看看CMakeList,或者看看是不是动态度都拷贝到 example/build了

file(GLOB ALL_LIBS ${LITE_AI_LIBRARY_DIR}/*so*)   # 将dylib修改为so,linux下是so,要有2个*来做正则匹配,因为linux写库的命名方式是 libxxx.so 或 libxxx.so.version

这个案例只是考虑了Mac作为示例用,不过Linux也差不多,保证库能链接上应该就行。

Richardlyq commented 2 years ago

好的好的,我试试,谢谢老哥

Richardlyq commented 2 years ago

老哥,您好,我刚刚又试了很多次,(1)改CMakeLists的话,好像报未指定最终目录的错误。(2)动态库拷贝到example/build后,运行一下sh ./build.sh就会刷新,我又修改了build.sh让他不删除现有的。但是最终还是会报can not open video的错误。我的动态库文件应该都是放在lite.ai.toolkit/lib里面的。到底怎么解决这个问题呀~ ~ image

DefTruth commented 2 years ago

没办法帮你解决😂,我这边Mac和linux都跑的挺正常的。不太清楚你的系统环境是怎样的。也不知道你有没有按照lite.ai.toolkit的README配Linux的环境变量。要是你都配了,按理说不应该出现这些问题。或者是用ldd看一下库的依赖关系。不太清楚你用的opencv是不是我编译好的,因为opencv和ffmpeg之间还有一层复杂的关系,要是你自己编的,也可能有问题,你在编译的时候可能比没有编译兼容ffmpeg的版本,而MP4的编解码需要用到ffmpeg。这些可能都是一些工程上的问题。最后的建议就是,你可以把rvm.cpp的逻辑抄出来用,没必要依赖lite.ai.toolkit.

image
DefTruth commented 2 years ago

关于opencv和ffmpeg,你可以参考我的文章:

要是试了都不行... 那就没办法了,我也只能帮你到这里了