导入错误:libopencv_core.so.3.0:无法打开共享文件

时间:2015-02-12 04:08:32

标签: opencv import

我正在使用Ubuntu 12.04。我最初安装了opencv 3.0-beta版本。由于某些原因,我在使用命令卸载旧版本后切换回旧版本2.4.9:

$> sudo make uninstall
$> sudo find / -name "*opencv*" -exec rm -i {} \;

我删除了opencv 3.0。

但是现在当我在Python中使用opencv 2.4.9和import cv2时,它会显示

  

导入错误:libopencv_core.so.3.0:无法打开共享对象文件:没有这样的文件或目录

这是否意味着卸载不完整。或者有没有办法解决这个错误和import cv2 opencv 2.4.9?

3 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。我通过删除"/usr/local/lib/python2.7/dist-packages"中的python2.7版本的cv2文件来修复此问题,并在"/usr/local/lib/python3.4/dist-packages"中为python 3.4删除了另一个cv2文件。我忘记了文件的确切名称但你应该看到它

答案 1 :(得分:0)

在我能够成功重新安装之前,我运行了find / remove以查看以下所有内容(我认为第2行和第4行是最重要的):

sudo find / -name "*opencv*" -exec rm -i {} \;
sudo find / -name "*opencv*" -exec rm -r {} \;
sudo find / -name "*OpenCV*" -exec rm -i {} \;
sudo find / -name "*OpenCV*" -exec rm -r {} \;
sudo find / -name "*cv2*" -exec rm -i {} \;
sudo find / -name "*cv2*" -exec rm -r {} \;

我正在使用此页面中的脚本进行安装:https://help.ubuntu.com/community/OpenCV

答案 2 :(得分:0)

在树莓派4上编译并安装opencv 4.1.1(全新安装)后,当我尝试导入cv2时得到了类似的消息:

void findPairHelper(int *a, int size, int d, int r[3]) {
    if (size < 2) return;  // base case: no match, r[0] is 0
    for (int i = 0; i < size - 1; i++) {
        if (abs(a[i] - a[size - 1]) == d) {
            r[0] = 1;
            r[1] = a[i];
            r[2] = a[size - 1];
            return; ///////////// found
        }
    }
    findPairHelper(a, size - 1, d, r); // recurse with smaller array
}
int *findPair(int *array, int size, int distance) {
    int *result = calloc(3, sizeof *result); // result[0] == 0 means 'no pair found'
    findPairHelper(array, size, distance, result);
    return result; // remember to free(result) at some point
}

我尝试了this solution,但是没有用,所以我以一种“肮脏”的方式做到了:

我运行了命令

(cv) pi@raspberrypi:~ $ python
Python 3.7.3 (default, Jul 25 2020, 13:03:44)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: libopencv_reg.so.3.3: cannot open shared object file: No such file or directory
>>>

我有一堆台词。重要的是:

(cv) pi@raspberrypi:~ $ sudo ldconfig -v

然后我创建了一个符号链接:

...
/usr/local/lib:
    ....
    libopencv_reg.so.4.1 -> libopencv_reg.so.4.1.1
...

最后,它成功了!

(cv) pi@raspberrypi:~ $ cd /usr/local/lib
(cv) pi@raspberrypi:/usr/local/lib $ sudo ln -s libopencv_reg.so.4.1.1 libopencv_reg.so.3.3

重新启动树莓派并再次导入cv2后,新的.so文件“丢失”,因此我对'/ usr / local / lib'中的所有其他libopencv _ *。so.4.1.1文件重复了最后一步。 / p>

(cv) pi@raspberrypi:~ $ python
Python 3.7.3 (default, Jul 25 2020, 13:03:44)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'4.1.1'
>>>