解决OpenCV重装后Python下import cv2错误问题(Ubuntu系统)

2023-11-18

    本文是博主解决问题过程中所产生的一些想法,分享出来,希望能帮到一些朋友。不足之处,还望各位大佬不吝赐教。

【前提】

    博主在Ubuntu服务器上安装了OpenCV4.0版本,Python环境下可以运行,如图1。某天在部署YOLO3的时候,程序跳出error: #error "OpenCV 4.x+ requires enabled C++11 support"错误。顾名思义:OpenCV 4.x +需要启用C ++ 11支持。此处应该有更优的解决方式,当时脑子一热,决定重新安装OpenCV3.4的。参考https://blog.csdn.net/cocoaqin/article/details/78163171教程装好之后,YOLO顺利执行,随后删除掉OpenCV4.0版本的相关文件。这时在python环境下导入cv2模块出错,报ImportError: libopencv_ml.so.4.0: cannot open shared object file: No such file or dicectory错误,如图2。

图1  初始状态OpenCV正常运行

 

图2 重装OpenCV后Python环境下出错

 【猜想】

    Python环境下import cv2模块其实导入的是编译OpenCV生成的.so文件,即cv2.so文件。既然导入cv2模块输出缺少4.0版本的文件,那么博主猜想此时导入的.so文件仍然是OpenCV4.0版本编译生成的。目标就是找到最新生成的.so文件并替换之前的版本。

【尝试】

    求助度娘之后,发现一种修改配置文件的方式,添加PYTHONPATH变量到~/.bashrc文件中,这种方式其实就是告诉Python到指定的地址下去寻找模块,一般用于导入自定义模块(读者可以了解一下sys.path和PYTHONPATH的相关知识)。因为OpenCV编译后的cv.so文件位于/usr/local/lib/python3.6/dist-packages路径下,所以在~/.bashrc文件最后添加export PYTHONPATH=/usr/local/lib/python3.5/dist-packages:$PYTHONPATH,让Python到该路径下查找。更改后运行source ~/.bashrc立即生效。import cv2,报出如下错误:AttributeError: module 'enum' has no attribute 'IntFlag',图3所示:

图3 尝试后出错

 

    这个错误让博主一头雾水,原来enum模块原本导入的是/usr/lib/python3.6/enum.py文件,/usr/local/lib/python3.5/dist-packages路径下有同名文件夹,博主修改了配置文件导致了/usr/local/lib/python3.6/dist-packages路径的优先级高于/usr/lib/python3.6/,从而导入错误的模块而忽略了正确的模块。

    博主在删除配置文件中PYTHONPATH值之后,通过import sys模块,使用sys.path语句输出Python到哪些路径下寻找导入的模块。输出结果如下图4所示:

图4 sys.path

   竟然发现/usr/local/lib/python3.6/dist-packages路径原本就在,看来这个方法是不行了。

【解决】

    这时博主找朋友借了一个服务器账号(单位内部服务器,大家的账号初始设置相同),Python环境下使用imp模块实现import过程,看看cv2模块到底在什么地方,使用imp.find_module("cv2")方法,输出如图5:

图5 cv2模块确切位置

    发现cv2模块居然是/usr/local/lib/python3.6/dist-packages/cv2/python-3.6/cv2.cpython-36m-x86_64-linux-gnu.so文件,而且,需要注意的是,这里的cv2.cpython-36m-x86_64-linux-gnu.so文件就是上文所说的cv2.so文件(不知道咋改名了,让我好找)。后面就好办了,新安装的OpenCV编译产生的cv2.cpython-36m-x86_64-linux-gnu.so文件在/usr/local/lib/python3.6/dist-packages/路径下,找到该文件,替换掉/usr/local/lib/python3.6/dist-packages/cv2/python-3.6/cv2.cpython-36m-x86_64-linux-gnu.so就行了。

    再次运行,成功!

图6 成功导入

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解决OpenCV重装后Python下import cv2错误问题(Ubuntu系统) 的相关文章

  • Java接口以及static和final关键字

    Java接口以及static和final关键字 一 static 二 final 三 让final元素可以初始化 不用固定赋值 四 接口 五 抽象方法 六 接口能够创建对象吗 匿名内部类 七 另一实例 开锁 一 static static代
  • OI考试中及平常练习里的一些低级错误总结

    long long相关 1 没开long long long long开少了 具体地 可能是未对题目可能产生的数值预估 可能是只写了int的读优 忽略long long 2 define int long long出锅 1 比如在遍历图的时
  • React中的性能优化

    1 所有的this指向都在constructor中绑定 就避免了多次绑定 this指向问题 只有当this指向我们定义的组件时才能去对state做修改 不去改变this指向 在该方法中this就指向undefined 2 setState是
  • ssm基于微信小程序的社区老人健康管理服务系统的设计与实现毕业设计源码011513

    摘要 随着现在网络的快速发展 网络的应用在各行各业当中它很快融入到了许多分类管理之中 他们利用网络来做这个社区老人健康管理服务系统 随之就产生了 社区老人健康管理服务系统 这样就让社区老人健康管理服务系统更加方便简单 对于本社区老人健康管理
  • Puzzles【Codeforces 697 D】【树形DP + 期望DP】

    Codeforces Round 362 Div 2 D 我们从1号结点开始 给每个结点标序 问的是每个结点的序号的期望是多少 输出这N个结点的期望 那么1号点的期望一定就是1了 对于其他的点呢 可以举例这样的一幅图 首先我们可以确定1 因
  • 基于UDP编程

    基于UDP编程 1 UDP是数据报协议 无连接的 不可靠 追求传输效率的一种通信协议数据的发送和接收是同步的 在进行通信之前 不需要建立连接 其传输效率比TCP高 对其服务器而言 并没有三次握手的过程 因此和TCP相比 少了被动监听 lis
  • Springboot实现发送邮件功能

    相信使用过Spring的众多开发者都知道Spring提供了非常好用的JavaMailSender接口实现邮件发送 在Spring Boot的Starter模块中也为此提供了自动化配置 下面通过实例来讲解如何在Spring Boot中使用Ja
  • 发布自己的Python包(Pypi)

    发布自己的Python包 Pypi 我们经常使用 Pypi 来安装包 但是有时候我们也想要发布自己的 Pypi 包 有可能我们写了一个特别牛的包 也有可能我们只是想使用自己常用的一些轮子 可能这是我们日常编码中很常用的一些轮子 我们在不同工
  • AttributeError: 'list' object has no attribute 'shape'

    深思熟虑 运筹帷幄 疑惑 解惑 shape 是数组的属性 不是集合的属性 可把集合变成数组 如np array list A
  • 架构之道:分离业务逻辑和技术细节

    点击上方 朱小厮的博客 选择 设为星标 当当满200减40优惠码 J2KNAE 来源 阿里巴巴云原生 1 什么是架构 关于架构这个概念很难给出一个明确的定义 也没有一个标准的定义 硬是要给一个概述 我认为架构就是对系统中的实体以及实体之间的
  • [深度学习] - 网络模型训练过程的 loss 变化分析 (loss / val_loss / test_loss)

    目录 一 train set 和 test set 基础知识 二 分析 loss 和 val loss test loss 变化情况 一 train set 和 test set 基础知识 train set 训练集是用来训练网络模型的数据
  • 大数据主要应用于哪些行业,应用价值是什么?

    大数据无处不在 大数据应用于各个行业 包括金融 汽车 餐饮 电信 能源 体能和娱乐等在内的社会各行各业都已经融入了大数据的印迹 下面详细介绍一下大数据在各行各业的具体应用 制造业 利用工业大数据提升制造业水平 包括产品故障诊断与预测 分析工
  • - UnitBox An Advanced Object Detection Network,arxiv 16.08

    UnitBox An Advanced Object Detection Network arxiv 16 08 download 该论文提出了一种新的loss function IoU loss 这点比较有意思 也容易复现 论文分析了fa
  • Python之子类调用父类的两种方式

    第一种方式 直接在子类中调用父类名 调用方式如下 Vehicle init self name speed load power 调用父类的实例 Vehicle run self 调用父类的方法 下面给出具体样例 直接调用父类名 class
  • Tesseract-OCR4.0在Visual Studio2015中的编译及运行

    最近项目需要使用到OCR引擎 通过百度了解到Tesseract在这方面做的挺好的 于是便开始学习tesseract tesseract的github地址 https github com tesseract ocr tesseract 现在
  • 四种排序:选择,插入,冒泡,快速排序原理及其对应的时间、空间复杂度解析

    四种排序 选择 插入 冒泡 快速排序原理及其对应的时间空间复杂度 首先 在了解四种排序之前 让我们来了解一下什么是时间复杂度和空间复杂度 时间复杂度 算法的时间复杂度是一个函数 它定性描述该算法的运行时间 记做T n 直白的来说 就是指运行
  • SDIO 驱动

    原文地址 http blog csdn net fengyuyaoye1980 article details 6859343 SDIO卡 SDIO卡是在SD内存卡接口的基础上发展起来的接口 SDIO接口兼容以前的SD内存卡 并且可以连接S
  • 期货开户的时间和流程

    对于一些想要做期货投资的朋友来说 最基本的就是首先要进行期货开户 那就需要了解开户具体的流程和相关注意事项 一般来说了解清楚一下三点就没什么问题了 一 对开户者本人的要求 1 年满18周岁 2 中国公民 有中国公民身份证 境内储蓄卡 3 没
  • pywinauto和PyUserInput实现windows程序自动化

    一 pywinauto 官方文档 https pywinauto readthedocs io en latest code code html 首先需要下个spy lite 便于查看程序窗口属性 主要模块 pywinauto applic
  • 通过jdbc实现GBase 8s Row类型数据插入与查询

    Row数据类型 由一个或多个任意的数据类型组成 例如 创建一个r1 t的Row数据类型 具有integer类型的i和boolean类型的b字段 参考语句如下 CREATE ROW TYPE r1 t i int b boolean 本文章详

随机推荐

  • Flutter:bottomNavigationBar图标白色的解决办法

    Flutter中 如果底部的Item超过三个 我们就需要为BottomNavigationBar设置一个type属性为 BottomNavigationBarType fixed 否则图标就会变成白色 导致什么都看不见
  • 设计模式之【观察者模式】

    观察者模式动机与定义 模式动机 一个对象的状态改变会引起其他对象的状态改变 模式定义 观察者模式 Observer Pattern 定义 定义对象间一种一对多的依赖关系 使得每当一个对象状态发生改变时 其相关依赖对象皆得到通知并被自动更新
  • few-shot learning, zero-shot learning, one-shot learning,any-shot learning, C-way K-shot,Meta-learn

    更新 2021 7 6 元学习 meta learning 与机器学习 machine learning machie learning 通常是单任务学习 每个任务有训练集和测试集 在训练集上训练模型 在测试集上测试模型 meta lear
  • 年底裸辞准备面试,我用7张图画了ZK分布式锁!

    一 写在前面 之前写过一篇文章 都2022年了 出去面试连分布式锁的源码你都不会画 给大家说了一下Redisson这个开源框架是如何实现Redis分布式锁原理的 这篇文章再给大家聊一下ZooKeeper实现分布式锁的原理 同理 我是直接基于
  • Python opencv学习-12 2D直方图绘制

    绘制2D直方图 要转换到hsv色彩空间 import cv2 import numpy as np from matplotlib import pyplot as plt img cv2 imread image pic2 png hsv
  • C++多线程:创建线程

    C 中线程的创建一般是通过std thread类实现的 具体的实现方式有以下几种 1 使用函数名创建 void pcreat int a cout lt lt start lt lt a lt lt endl int main thread
  • advisor2002仿真参数界面grade options不弹出设定窗口

    针对这种问题 解决办法如下 第一步 找到advisor2002安装路径 然后找到 advisor2002 gui gradefig m文件和gradefig mat文件 把gradefig m文件名改为GradeFig m再把gradefi
  • AD账号导入--dsadd user

    Microsoft Windows AD账号全命令方式操作 导入一 AD 叫active directory 中文活动目录 其实是一个数据库 下面将介绍以数据库方式操作AD 对象二 AD对象操作有如下 1 新建一个对象 用 dsadd
  • windows如何查看最近打开的文件及文件夹?

    按住win R快捷键 输入recent 即可看到最近打开的文件
  • C语言的每日一题(一)

    前言 今天开始 我将开启我的每日一题之路 作者 一颗带有痣的毛 期待你的关注 一 三位数反转 题目 输入一个三位数 分离出它的百位 十位和个位 反转后输入 样例输入 127 样例输出 721 首先我们来分析一下这一题的思路 这一题的主要思路
  • 九鼎Study210嵌入式开发板刷机笔记

    本刷机笔记是基于S5PV210的九鼎Study210嵌入式开发板 准备 电脑通过串口线连接到开发板的UART2 靠近电源 与裸机不同 usb线连接到开发板OTG端口 开发板接入电源 串口助手打开 开机 只要连接成功 无论开发板是否启动了ub
  • Android系统控件使用的踩坑日志

    1 ListView在乐视 三星手机上出现崩溃 修复listview在部分手机上崩溃 java lang IndexOutOfBoundsException Invalid index 0 size is 0 at java util Ar
  • 【ARM 常见汇编指令学习 3 -- ARM64 无符号位域提取指令 UBFX】

    文章目录 ARM64 无符号位域提取指令 上篇文章 ARM 常见汇编指令学习 2 存储指令 STP 与 LDP 下篇文章 ARM 常见汇编指令学习 4 ARM64 比较指令 cbnz 与 b ne 区别 ARM64 无符号位域提取指令 在代
  • 图片上传提交前,图片显示在页面上

    lt div class upload box gt lt b gt 上传图片 lt input type file name file id file accept image onchange imgChange this gt lt
  • MMSegmentation笔记07:使用MMDeploy部署

    1 安装MMDeploy 首先要安装MMDeploy库 直接在对应环境下执行命令 pip install mmdeploy 1 2 0 然后在对应项目下安装MMDeploy源码 在cmd中执行 git clone https github
  • 求建议:二本计算机专业,考研还是就业做开发?

    安老师好 我是一个大连某二本院校的在读生 专业是计算机 日语强化 上大学以来一直关注着您的公众号 读了很多您的文章 学到很多东西 也受到过您的鼓舞 随您一同成长进步 目前我已是大三下 站在第二个人生岔路口 正为各种浮在空中的想法烦恼不已 身
  • C++ 读取文件和写入文件

    C 读取文件 有两种方式可以实现读文件的功能 第一种 用fread实现 这种方法适合读取各种结构化的数据包 include
  • 良心推荐:12个免费学习网站,赶紧收藏

    01 Oeasy http oeasy org Oeasy 是一个完全免费的综合视频教程网站 非常良心实用 它提供的视频教程非常丰富并且质量很高 包括 PS 教程 手机摄影教程 Ai 做图教程 Excel 教程 Word 教程 PPT 教程
  • python 安装第三方库,超时报错--Read timed out.(安装numpy时会出现)

    近期在安装numpy时 总是会出现Read timed out这个错误 经查是由于python在安装三方库时设置的时间限制 一般我们使用的命令为 pip install XXXX XXXX为你即将要安装的三方库 此时可能会出现以下错误 Re
  • 解决OpenCV重装后Python下import cv2错误问题(Ubuntu系统)

    本文是博主解决问题过程中所产生的一些想法 分享出来 希望能帮到一些朋友 不足之处 还望各位大佬不吝赐教 前提 博主在Ubuntu服务器上安装了OpenCV4 0版本 Python环境下可以运行 如图1 某天在部署YOLO3的时候 程序跳出e