首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么opencv3需要libavcodec56,而opencv2需要libavcodec57

为什么opencv3需要libavcodec56,而opencv2需要libavcodec57
EN

Stack Overflow用户
提问于 2018-06-11 01:01:23
回答 1查看 394关注 0票数 0

我已经使用apt-get安装了opencv。我用下面的版本得到了opencv2,它工作得很好:

代码语言:javascript
复制
rover@rover_pi:/usr/lib/arm-linux-gnueabihf $ python2.7
Python 2.7.13 (default, Nov 24 2017, 17:33:09) 
[GCC 6.3.0 20170516] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'2.4.9.1'

然后我想使用pip在conda环境中安装opencv。我得到了以下版本

代码语言:javascript
复制
(olfatf)rover@rover_pi:/usr/lib/arm-linux-gnueabihf $ pip list | grep opencv
opencv-python          3.4.0.14  

然而,当我导入模块时,我得到了以下错误:

代码语言:javascript
复制
(olfatf)rover@rover_pi:/usr/lib/arm-linux-gnueabihf $ python
Python 3.4.3 |Continuum Analytics, Inc.| (default, Aug 21 2015, 00:53:08) 
[GCC 4.6.3] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/pi/.conda/envs/olfatf/lib/python3.4/site-packages/cv2/__init__.py", line 3, in <module>
    from .cv2 import *
ImportError: libavformat.so.56: cannot open shared object file: No such file or directory

我检查了安装libavcodec库,得到了版本57。

代码语言:javascript
复制
(olfatf)rover@rover_pi:/usr/lib/arm-linux-gnueabihf $ ls | grep libavformat
libavformat.a
libavformat.so
libavformat.so.57
libavformat.so.57.56.101

所以我想知道为什么更新版本的opencv需要旧版本的libavcodec。另外,如何在我的机器上同时安装libavcodec56和libavcodec57?

我用树莓派和Raspbian Strech

EN

回答 1

Stack Overflow用户

发布于 2018-06-11 05:04:44

这并不是opencv需要它,而是谁编译了你正在使用的opencv的二进制文件,它就是针对libavcodec56编译的。最简单的修复方法是自己编译它。

另外,如何在我的机器上同时安装libavcodec56和libavcodec57?

不要。只需编译并链接到同一版本即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50786055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档