Anaconda下Jupyter Notebook执行OpenCV中cv2.imshow()报错(错误码为1272)网上解法汇总记录和最终处理方式

2023-11-08

零、我设备的相关信息

  • Python 3.8.8
  • Anaconda3 2021.05
  • 查询匹配python3.8.*的OpenCV匹配版本为:4.1.* — 4.2.*,我最后安装4.2.0.32版本
  • 如下我记录了 “从发现问题,到不断试错,最后解决问题” 的完整过程,以备自己复盘使用,大家不愿费时的可直接查看总结版的处理方式记录

一、问题起源

  • 学校计算机视觉课要求完成实验,里头涉及OpenCV的使用,但对于cv2.imshow()语句总是会报错
  • 报错信息如下:
    • 在这里插入图片描述

    • cv2.error: OpenCV(4.8.0) D:\a\opencv-python\opencv-python\opencv\modules\highgui\src\window.cpp:1272: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvShowImage''

    • 错误码:1272


二、试错过程

  • 我网页检索相关错误的处理方式总结如下:

2.1 Anaconda之前没通过正规下载OpenCV的方式导致的问题(×)

  • 实验课第一节课老师叫我们安装OpenCV包,我没安装OpenCV的印象,但却发现anaconda里已有OpenCV,所以猜测多半是去年做课设的时候,提前安装过了。但可能当时着急用,没有通过正规安装,直接把别人下载好的包文件添加到根目录的site-packages下,可能是没复制完全所以导致报错里显示找不到window.cpp
  • 对于该条可能性错误,我处理方式:卸载原有的opencv-python,重新安装了,但并未解决问题

2.2 只安装了OpenCV,没匹配安装如下四个包(×)

  • ①opencv-python(只包含主模块)
  • ②opencv-contrib-python(包含main和contrib模块)
  • ③opencv-python-headless(与opencv-python相同,但没有GUI功能)
  • ④opencv-contrib-python-headless(与opencv-contrib-python相同,但没有GUI功能)
  • 对于该条可能性错误,我处理方式:
    • 一开始把这四个包全安装了最新版本,但安装后还是报错
    • 所以又继续找问题,说是可能第①个包opencv-python下载要匹配python版本,而其余②③④也要匹配①的版本
    • 于是我又根据python版本下载了各自匹配的四个包,但都并没有解决问题
    • 并且最后查询多个博客分享后得知,并不需要四个包都下载,一般留一个①即可,于是我都卸载了留下①opencv-python=4.2.0.32

2.3 Anaconda使用不当,导致设置错乱(×)

  • 我留下了opencv-python=4.2.0.32后,它依旧报错,并且报错原因和原来一致,甚至发现报错里显示的依旧是最新版opencv-python=4.8.0,可是conda list查询后明明版本已经更改,如若继续同样错误,也应该是显示当前conda list里的版本吧?
  • 对于该条可能性错误,我处理方式:
    • 我寻思可能因为课设时,对Anaconda使用不当,不知道哪里被我设置错乱了。我想着实在不行彻底卸载重装大法,总能清理掉之前错误的设置,解决掉设置错乱吧!
    • 于是有了我这篇博客:Anaconda彻底卸载及重安装
    • 但可惜的是卸载重装后,依旧是这样的问题。

2.4 opencv版本匹配到别的软件上了(×)

  • 对于卸载重装后错误显示依旧未有任何变化,并且其他cv2的使用正常的情况让我怀疑jupyter里的opencv用的不是我下载的,我猜想是否我把刚下载的匹配版opencv下载到另个环境里,导致用的不是我刚刚下载的匹配版opencv。
  • 对于该条可能性错误,我处理方式:
    • 卸载了opencv,直接尝试import cv2可以执行,并未出错。
    • 于是我顺着这条方向找到了这篇文章:因OpenCV版本不一致所引发的报错。我理解讲的大致讲的是在Anaconda里安装OpenCV包之前,Anaconda就匹配上其他软件自带的OpenCV了,而其他软件里OpenCV出错了,所以导致Anaconda引用使用时也出错了。
      • 我觉得这个思路能很好解释了“为什么Anaconda里再怎么下载安装相关的包都对问题造成不了影响和变化”。解释了为什么不管版本是不是最新4.8,或者不管有没有安装OpenCV,它出错都是报同个版本4.8,也都能正常导入import cv2
      • 于是我通过everthing的全盘检索,找到了所有自带有OpenCV的软件,其中显眼的是:MATLAB和Qt
    • 可若真是这两个自带软件的问题,我就需要卸载这两个软件,避免被jupyter里的OpenCV匹配上,但考虑到①安装这俩软件我之前也挺费劲的,不是很愿意删除掉;②就算卸载,之后可能还需要用上这两个软件,到时候还是得处理这个问题,相当于卸载只是延迟了问题;③若卸载依旧仍未成功解决问题,我又徒增两个软件卸载干净与重安装的问题。
      • 于是我想着是否能更改已生成的OpenCV链接→就找到了MATLAB和QT对应的cmakelists.txt文件,尝试打开后修改OpenCV相关的版本依赖,但每个.txt文件都没有出现opencv这个关键词。
      • 于是我就想着是不是我自己没找全或者找对依赖文件(也就是OpenCV依赖信息并不存在cmakelists.txt文件里,所以我才找不到)→ 于是我想着既然我改不了,那我在环境变量中把Anaconda的环境变量配置全置顶,也能避免Anaconda的环境配置优先受到其他软件的影响。但事实证明,更改后依旧没有用。 在这里插入图片描述

2.5 查看python解释器环境(√)

  • 由于2.4中提及的三点考虑因素,我依旧不愿意卸载MATLAB和Qt,想着是否还有其他可循的思路。我首先通过以上的试错,可总结如下几点确定的信息:
    • ① 想成功执行cv2.imshow()语句,仅需opencv-python包即可
    • ② 报错信息中的OpenCV(4.8.0)与Anaconda一点关系没有(在Anaconda中怎么下载安装opencv或卸载都无用)
    • ③ 使用出错的OpenCV(4.8.0)不在Anaconda相关的路径下
    • 基于如上三点的考虑,我确认了目前解决问题的方向是:找到OpenCV(4.8.0)到底是谁的引用
  • 因此我再次使用everthing进行全盘对opencv关键字的检索,发现除了MATLAB和Qt,还有两个目录下出现了opencv,而如下两个都是系统相关的并不是某个软件自带→于是我动摇了2.4中,jupyter的引用是由于MATLAB和Qt导致的猜想。
    在这里插入图片描述
  • 并且在问题检索的过程里,我查询到了以下两条命令,是用于查看Python 解释器相关的系统环境参数
    import os
    os.sys.path
    
    • 查询结果如下:在这里插入图片描述
    • 对结果的分析:由于总结③中说明了“使用出错的OpenCV(4.8.0)不在Anaconda相关的路径下”,所以直接不必看Anaconda3的路径,筛选后只剩下红框出来的系统用户路径
    • 于是顺着该路径进入文件夹后,发现目录下的存在一个cv2文件夹,并且时间显示为23-07-02符合opencv4.8.0版本的时间。我怀疑找到了问题所在,但不确定于是并未直接删除该文件,仅是转移到另个位置(同时转移过程中,系统提示我文件夹中的cv2.pyd文件正在被使用,我当时是并未退出jupyter的,所以就更相信问题与这个文件夹有关了。)
      在这里插入图片描述
  • 问题被解决:
    • 当移除该目录下的cv2文件夹后,我再次运行import cv2显示找不到该库,我知道问题被解决了(因为我当时完全卸载了Anaconda中的opencv-python包,而Anaconda终于对该问题有了影响)
    • 我按照python匹配的版本,下载安装了opencv-python,最后终于正常显示结果在这里插入图片描述

三、总结版处理方式

  • 前提:确认Anaconda中怎么更改opencv-python版本,甚至直接卸载opencv-python,Anaconda里import cv2都能正常运行,且报错时的版本都不变,就可以考虑如下解决方式:
  • ①通过如下命令,查看Python 解释器相关的系统环境参数
import os
os.sys.path
  • ②不必考虑Anaconda有关路径,直接进入你对应显示的用户路径(和我图里的不一样,你得找你自己的)在这里插入图片描述
  • ③找到,并把cv2文件剪切到其他地方去(先别删除,以防不是这个导致的)
    • 若提示 cv2.pyd文件正在被使用不能移动,就关闭jupyter后单独把这个文件再移动一下,总之得让这个目录下不存在cv2这个文件夹了
      在这里插入图片描述
  • ④移除后,再次运行,即可正常执行cv2.imshow()

四、反思总结

  • 当问题发生时:
  • ①虽然最好能找到出现同样错误的人的总结,根据他们的处理方式一步步执行并纠错。这是最保险的(因为中间可能出现的错别人走过了)、也是最迅速的(因为只要照做即可)。但必须考虑到,很多错误并不是很常见的,因此网上并非能这么容易找到,刚好和你问题一致并且很完美的解决处理;并且即使问题报错信息一致,但导致的原因可能千差万别,因此同个问题,别人适用的解决方式,给你未必适用(所以才会有了解决问题过程中的不断试错)
  • ② 所以要学会配合每个错误提示与博客他人的分析,追根溯源找到你自己问题出错的本质原因,发现本质原因后,就要适当根据具体情况调整浏览器的检索方式
    • 比如我一开始可能是直接把报错信息复制粘贴到浏览器中搜索
    • 后期我发现出错的opencv版本对应不上Anaconda,我就检索opencv版本错乱原因
    • 并且最终我得以解决问题的重要命令:os.sys.path,也不是靠一开始的搜索就找到的,也是后面零零碎碎问题查找中对于处理相关的问题,别人提供的思路。
  • ③ 合理评估每个可能解决途径背后需要承担的风险,不能看到什么可能解决的路径就完全不考虑后果地去走通尝试一下
    • 比如卸载MATLAB和Qt,当时情况下只有这条路能走,但这种情况下就要考虑一下卸载后若依旧无法解决问题的风险我是否能承担
    • 若一些可能走的路风险太大,就可以先总结一下试错过程中得到的正确信息,并总结接下来问题解决的方向(在试错过程里一定要时刻都很明确自己目前要解决的问题!很明确自己现在在干什么!别把自己绕晕),清楚自己的底气和方向之后,再去思考有没有别的路可以尝试摸索的
  • ④ 自己处理不来的时候,就向他人寻求帮助
    • 我习惯自己处理问题,但这个问题我实在找不通路的情况下,就总结了自己试错的收获与接下来的方向后,向老师提出的询问,最后老师的处理方式虽然并未走通,但沟通的过程中能帮助你总结其他试错得到的信息、也有几率能开拓思路。
    • 比如我和老师的沟通中,老师提出了“opencv根本就没在anaconda路径下”的判断与尝试多考虑考虑opencv可能相关的环境配置。这两点都对最后解决问题提供了帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Anaconda下Jupyter Notebook执行OpenCV中cv2.imshow()报错(错误码为1272)网上解法汇总记录和最终处理方式 的相关文章

  • PhpStorm IDE:Ubuntu 18 LTS 中光标卡在文本选择(突出显示)模式

    我正在使用 PhpStorm 来处理 Laravel 项目 但是 鼠标卡在文本突出显示模式下并且右键单击在 IDE 上不起作用 关闭IDE并重新启动并不能解决问题 我试图在网上寻找答案但没有成功 对于那些像我一样苦苦挣扎的人 我有一个解决方
  • 在 Jupyter Notebook 上使用 virtualenv

    我尝试使用virtualenv在 jupyter 笔记本上 使用环境中安装的所有软件包 但在 jupyter 内部它们无法识别 已经尝试过 pip install tornado 4 5 3 pip install ipykernel 4
  • Ruby On Rails 与 Windows Vista - 最佳设置? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 您认为 Win Vista 环境中 RoR 的最佳设置是什么 我尝试过 radrails eclipse 插件 它对我来说似乎太庞大了 我也开始
  • 在 opencv 中一次性将旋转和平移结合起来

    我有一段用于旋转和平移图像的代码 Point2f pt 0 in rows double angle atan trans c trans b 180 M PI Mat r getRotationMatrix2D pt angle 1 0
  • 静态 OpenCV 库中未定义的引用

    我有一个使用 OpenCV 3 1 的 C 项目 并且使用共享库可以正常工作 但现在我想使用静态库 位于项目目录中的文件夹中 来编译它 因为我希望能够在未安装 OpenCV 的情况下导出它 如果需要还可以编辑和重新编译 这次我重新编译了 O
  • Haar级联正例图像大小调整

    我正在迈出第一步 为自定义对象识别创建 haar 级联 我花了时间获取大量数据并编写了一些预处理脚本以将视频转换为帧 我的下一步是裁剪感兴趣的对象 以创建一些积极的训练示例 我有几个问题 我确实在网上寻找答案 我有点困惑 我读到我应该致力于
  • 在 virtualenvwrapper 中激活环境

    我安装了virtualenv and virtualenvwrapper用这个命令我创建了一个环境 mkvirtualenv cv 它有效 创建后我就处于新环境中 现在我重新启动了我的电脑 我想activate又是那个环境 但是怎么样 我使
  • OpenCV 地板分割检测

    我正在研究一种检测图像中地板的方法 我试图通过将图像缩小为颜色区域然后假设最大区域是地板来实现此目的 我们对机器人的运行环境做出一些相当广泛的假设 我正在寻找一些关于适合这个问题的算法的建议 任何帮助将不胜感激 编辑 具体来说 我正在寻找一
  • OpenCV功能类似于matlab的“查找”

    我正在寻找 openCV 中的一个函数来帮助我制作图像蒙版 例如在 MATLAB 中 B A or B 零 大小 A B A 10 c 有些功能可以让你通过mask向他们提出论据 按照您描述的方式创建面具 我认为您正在追求Cmp 或 Cmp
  • 在openCV内部调用Gstreamer

    我需要在 openCV 代码中调用 Gstremaer 本质上是打开摄像机 当我查看源代码时 modules highgui src cap gstreamer cpp似乎是我正在寻找的文件 我用 Gstreamer 标志编译了 OpenC
  • 为什么在 OpenCV 中访问该矩阵时出现内存错误?

    我只是想写入给定大小的矩阵 当我在 Valgrind 中运行该程序时 出现内存错误 如下所示 主要 cpp include
  • OpenCV SVM 给出奇怪的预测结果

    我对 OpenCV 和支持向量机都很陌生 我想使用 SVM 训练具有两个标签的数据集 然后预测给定集合的标签 我当前的集合包含大约 600 行 具有相等的类分布 1 为 300 行 1 为 300 行 包含 34 列 这是我当前用于设置 O
  • Sublime Text 缩进设置被文件覆盖

    我正在开发一个项目 其中制表符大小应该为 4 并且制表符不应该是空格 我更新了我的 Preferences sublime settings 文件以包括 detect indentation false tab size 4 transla
  • 使用 OpenCV 从轮廓获取掩模

    我想从我通过 cv findContours 计算的轮廓 它只存在 1 个轮廓 获取图像掩模 然而 虽然我的轮廓变量不为空 但我无法使用 cv drawContours 检索图像蒙版 我的目标图像始终为空 这是我的代码 img mosaic
  • OpenCV findContours() 仅返回一个外部轮廓

    我试图隔离验证码中的字母 我设法过滤验证码 结果是这个黑白图像 但是当我尝试使用 OpenCV 的 findContours 方法分离字母时 它只是发现了一个包裹整个图像的外部轮廓 从而产生了该图像 图像外部的黑色轮廓 我将此代码与 Pyt
  • OpenCV InRange 参数

    我在 Android 上使用 OpenCV 来实时查找特定颜色的圆圈 我的第一步是仅保留与我正在寻找的定义颜色相对应的像素 在本例中为红色或绿色 示例图像 https i stack imgur com CIozU jpg 为此 我正在使用
  • OpenCV 2.4.3rc 和 CUDA 4.2:“OpenCV 错误:没有 GPU 支持”

    我在这张专辑中上传了几张截图 https i stack imgur com TELST jpg https i stack imgur com TELST jpg 我正在尝试在 Visual Studio 2008 中的 OpenCV 中
  • 如何在 Jupyter 笔记本单元中制作一个大图形,在输出到 html 时可滚动

    如您所知 当您在 Jupyter Notebook 单元格中打印大型表格时 无论表格是在 Notebook 环境中打印还是保存到 html 文件中 当表格太大时 都会自动使其可水平或垂直滚动 但对于图形来说 当它太大时 它会像大表格一样可滚
  • 使用 openCV 锐化视频图像

    我想使用 OpenCV 锐化我的图像 我在网上查看了一个示例 该示例正在对灰度图像执行锐化 我尝试了它 它工作得很好 然而 我现在尝试做同样的事情 但使用 RGB 颜色 所以我分别在三个通道上执行相同的功能 但它没有给我任何结果 图像与原始
  • 构建 OpenCV 时出错 :: MonitorFromRect 未在此范围内声明

    我试图建立OpenCV version 2 4 8与它一起使用CodeBlocks and MinGw 我按照以下指示进行操作here http kevinhughes ca tutorials opencv install on wind

随机推荐

  • 解决wiringPi库与64位树莓派之间不兼容的问题

    目录 一 问题现象 二 解决方案 网站 可以直接点这下载 一 问题现象 今天在练习wiringPi库的使用时候 在最后编译的时候出现了这个问题 主要问题是这个skipping incompatible skipping incompatib
  • Android上OpenCV物体检测,Opencv图像识别Android实战(识别纸牌4.图像识别素养)

    我认为大多数阅读本文的人都对机器学习有所了解 我认为没有必要在学术上解释这种含义 人类学习的目的不是识别更多的东西 机器学习也是如此 也就是说 让计算机通过学习类比来学习更多的东西 在这里 我们让计算机知道图像 要让计算机知道事情 我们必须
  • 集成学习笔记

    集成学习通过结合规则 使用一系列弱学习器来组成一个强学习器 集成学习通常有两个步骤 ensemble generation 和 ensemble integration 通常在两个步骤之间会有一个 pruning process 剪枝过程
  • LeetCode--初级算法--环形链表

    题目 给定一个链表 判断链表中是否有环 为了表示给定链表中的环 我们使用整数 pos 来表示链表尾连接到链表中的位置 索引从 0 开始 如果 pos 是 1 则在该链表中没有环 示例 1 输入 head 3 2 0 4 pos 1 输出 t
  • Excel条件格式化(conditional formatting)应用

    简介 条件格式化顾名思义就是根据条件对单元格进行格式化 填充 字体等 比如我们有一个学生成绩表 根据需要我们要把成绩按 不及格 lt 60 良好 gt 60且 lt 90 优秀 gt 90 进行颜色标注 第一步 如图 第二步 如图 点击 确
  • OpenMP task 原理与实例

    个人理解 Openmp自从3 0以后全面走向任务驱动 task机制非常重要 可以显式定义任务 而其余parallel代码块中不用task定义的实际上是隐式任务 抽象来说就是有两个池子 线程池与任务池 闲置的线程会在线程池等待任务 显式任务与
  • Servlet登录注册(IDEA)

    user类 提供get set 有参 无参 toString方法 UserDao层 UserDaoImpl层 登录 注册是否重复 真正的注册 UserService层 登录LoginServlet层 注册和注册用户唯一的ZcServlet层
  • html,css,js简单介绍,html常用标签

    目录 简单介绍 HTML常用标签 1 html骨架标签 2 标题标签 3 段落标签 4 换行标签 5 文本格式化标签 6 div标签 span标签和pre标签 7 图像标签 8 超链接标签 9 注释标签 10 表格标签 11 列表标签 12
  • Geometry Shader 概念和实例

    前言 Shader Model 4给我们带来了Geometry Shader这个玩意儿 其实这个东西早就在一些3D动画制作软件中存在了 比如Maya 8 我参考了以前DX10的哪一篇Preview与Csustan edu的一篇比较详尽的教材
  • C语言实现url解析小实例

    一 前言 前面一口君写了一篇关于url的文章 一文带你理解URI 和 URL 有什么区别 本篇在此基础上 编写一个简单的用于解析url的小例子 最终目标是解析出URL中所有的数据信息 二 库函数 用到的几个库函数如下 1 strncasec
  • Dota数据集介绍

    文章目录 前言 DOTA数据集介绍 DOTAV1 0 DOTAV1 5 DOTAV2 0 标注方式 Task1 Detection with oriented bounding boxes Task2 Detection with hori
  • 基于Android+OpenCV+CNN+Keras的智能手语数字实时翻译——深度学习算法应用(含Python、ipynb工程源码)+数据集(四)

    目录 前言 总体设计 系统整体结构图 系统流程图 运行环境 模块实现 1 数据预处理 2 数据增强 3 模型构建 4 模型训练及保存 5 模型评估 6 模型测试 1 权限注册 2 模型导入 3 总体模型构建 4 处理视频中的预览帧数据 5
  • erlang 实现二叉树

    此为一练习题 为 Erlang程序设计 第7章后的练习题 7 5 二叉树记录 建立二叉树 ifdef debug define DBG Str Args io format Str Args else define DBG Str Args
  • 20230626 数学

    1 极大似然估计 Maximum likelihood estimation 最大似然估计 大道上的头陀的博客 CSDN博客 极大似然估计的应用场景 极大似然估计 Maximum Likelihood Estimation MLE 是统计学
  • [leetcode 周赛 148] 1144 递减元素使数组呈锯齿状

    目录 1144 Decrease Elements To Make Array Zigzag 递减元素使数组呈锯齿状 描述 思路 代码实现 1144 Decrease Elements To Make Array Zigzag 递减元素使数
  • vue实现简单搜索功能

    目录 1 概述 2 功能逻辑 2 1功能流程 2 2 流程图 3 功能实现 3 1 vue组件化 3 2 代码 3 3 动态效果 1 概述 在vue项目中 搜索功能是我们经常需要使用的一个场景 最常用的是在列表数据中搜索一个想要的 今天的例
  • C语言stat()函数:获取文件状态

    C语言stat 函数 获取文件状态 相关函数 fstat lstat chmod chown readlink utime 头文件 include
  • 【Bcos】create BcosSDK failed, error info: init channel network error

    create BcosSDK failed error info init channel network error Try init the sslContext failed Try init the sslContext faile
  • 功能强大的国产Api管理工具

    前言 如果你是一名Java后端开发工程师 像Swagger Postman RAP这些工具 应该再熟悉不过了吧 为我们的接口开发工作带来了很多的便捷 不过因为这些都是独立的框架 之间并不存在互通性 因此在多个框架间协调的时候 不可避免的会带
  • Anaconda下Jupyter Notebook执行OpenCV中cv2.imshow()报错(错误码为1272)网上解法汇总记录和最终处理方式

    零 我设备的相关信息 Python 3 8 8 Anaconda3 2021 05 查询匹配python3 8 的OpenCV匹配版本为 4 1 4 2 我最后安装4 2 0 32版本 如下我记录了 从发现问题 到不断试错 最后解决问题 的