CentreNet代码问题记录:undefined symbol: FT_Done_MM_Var

注意:这篇文章的解决方案中,笔者用的只是把opencv-python的版本换掉了,治标不治本,如果涉及cv2更复杂的用法,可能存在版本不兼容的问题!

这几天学习CenterNet的源代码,按照getting start、install、model zoo几个md文件把环境配好后,运行代码,结果import部分就报错:
CentreNet代码问题记录:undefined symbol: FT_Done_MM_Var_第1张图片
CentreNet代码问题记录:undefined symbol: FT_Done_MM_Var_第2张图片

可见是cv2模块引用的时候除了问题。看其他博主写道:undefined symbol: FT_Done_MM_Var 错误的原因,libfontconfig.so.1造成。opencv 的 Python版本是按照系统库编译的,而在调用时,使用了anaconda/lib中的库(原文链接)。

于是对比了一下虚拟环境和系统里opencv-python版本,发现确实虚拟环境中版本更高(下面第一张图):
虚拟环境的库
系统的库

该文章中作者给出两种方案,一是更改连接,二是用系统里的libfontconfig.so.1替换anaconda目录下的对应文件。
笔者采取的方式是:在虚拟环境中重新安装和系统版本一致的opencv-python库(可能会出问题,因为centernet代码里主要只用到了cv2的imread函数,就可以采取这种办法)。
中途还对pip进行了升级。故完整指令如下:

pip uninstall opencv-python
pip install --upgrade pip --trusted-host pypi.tuna.tsinghua.edu.cn
pip install opencv-python==4.5.3.56 --trusted-host pypi.tuna.tsinghua.edu.cn

最后在虚拟环境中运行python,可以正常导入cv2。

你可能感兴趣的:(python,opencv,计算机视觉)