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

这篇具有很好参考价值的文章主要介绍了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版本
  • 如下我记录了 “从发现问题,到不断试错,最后解决问题” 的完整过程,以备自己复盘使用,大家不愿费时的可直接查看总结版的处理方式记录

一、问题起源

  • 学校计算机视觉课要求完成实验,里头涉及OpenCV的使用,但对于cv2.imshow()语句总是会报错
  • 报错信息如下:
    • Anaconda下Jupyter Notebook执行OpenCV中cv2.imshow()报错(错误码为1272)网上解法汇总记录和最终处理方式,jupyter,opencv,ide

    • 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文章来源地址https://www.toymoban.com/news/detail-709014.html


二、试错过程

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

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的环境配置优先受到其他软件的影响。但事实证明,更改后依旧没有用。 Anaconda下Jupyter Notebook执行OpenCV中cv2.imshow()报错(错误码为1272)网上解法汇总记录和最终处理方式,jupyter,opencv,ide

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导致的猜想。
    Anaconda下Jupyter Notebook执行OpenCV中cv2.imshow()报错(错误码为1272)网上解法汇总记录和最终处理方式,jupyter,opencv,ide
  • 并且在问题检索的过程里,我查询到了以下两条命令,是用于查看Python 解释器相关的系统环境参数
    import os
    os.sys.path
    
    • 查询结果如下:Anaconda下Jupyter Notebook执行OpenCV中cv2.imshow()报错(错误码为1272)网上解法汇总记录和最终处理方式,jupyter,opencv,ide
    • 对结果的分析:由于总结③中说明了“使用出错的OpenCV(4.8.0)不在Anaconda相关的路径下”,所以直接不必看Anaconda3的路径,筛选后只剩下红框出来的系统用户路径
    • 于是顺着该路径进入文件夹后,发现目录下的存在一个cv2文件夹,并且时间显示为23-07-02符合opencv4.8.0版本的时间。我怀疑找到了问题所在,但不确定于是并未直接删除该文件,仅是转移到另个位置(同时转移过程中,系统提示我文件夹中的cv2.pyd文件正在被使用,我当时是并未退出jupyter的,所以就更相信问题与这个文件夹有关了。)
      Anaconda下Jupyter Notebook执行OpenCV中cv2.imshow()报错(错误码为1272)网上解法汇总记录和最终处理方式,jupyter,opencv,ide
  • 问题被解决:
    • 当移除该目录下的cv2文件夹后,我再次运行import cv2显示找不到该库,我知道问题被解决了(因为我当时完全卸载了Anaconda中的opencv-python包,而Anaconda终于对该问题有了影响)
    • 我按照python匹配的版本,下载安装了opencv-python,最后终于正常显示结果Anaconda下Jupyter Notebook执行OpenCV中cv2.imshow()报错(错误码为1272)网上解法汇总记录和最终处理方式,jupyter,opencv,ide

三、总结版处理方式

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

四、反思总结

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

到了这里,关于Anaconda下Jupyter Notebook执行OpenCV中cv2.imshow()报错(错误码为1272)网上解法汇总记录和最终处理方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • cv2保存图片类型错误执行报错cv2. error: OpenCV(4.6.0) :-1: error: (-5:Bad argument) in function ‘imwrite‘ - img i

    硬件环境(Ascend/GPU/CPU): GPU 软件环境: – MindSpore 版本: 1.7.0 执行模式: 静态图(GRAPH) – Python 版本: 3.7.6 – 操作系统平台: linux 将优化好的图像用cv2进行图片保存,由于没有将tensor转换为numpy,导致cv2.imwrite运行失败。 adversarial_tensor, mask_tensor = adversarial.train(attack_method) cv2.imwrit

    2024年02月17日
    浏览(59)
  • 解决yolov5的报错:WARNING Environment does not support cv2.imshow() or PIL Image.show()

    这几天在用yolo v5训练模型调用电脑摄像头的时候遇到了这个报错,尝试了很多办法去解决,比如用pip卸载opencv再重新下载和跟换opencv的版本,或者更改yolo里的代码,但是都没有解决问题。 后来发现在我卸载了opencv后,pycharm里的cv2模块依然可以被调用,所以应该是pip的unins

    2024年02月07日
    浏览(77)
  • python中图片读取和保存以及plt.imshow()与cv2.imshow()显示图像颜色错误解决方案

    最近调试程序的时候,发现要保存的图片颜色与原图片有色差(显示图像变蓝),郁闷良久,终于发现问题,望诸君避坑。 🧸在用plt.imshow和cv2.imshow显示同一幅图时可能会出现颜色差别很大的现象。 🎯原因:opencv的接口使用BGR,而matplotlib.pyplot 则是RGB模式。 单独使用图像是

    2024年02月11日
    浏览(48)
  • OpenCV报错:AttributeError: module ‘cv2.cv2‘ has no attribute ‘SIFT_create‘

    报错原因:opencv将SIFT等算法整合到xfeatures2d集合里面了。 改为:

    2024年02月07日
    浏览(50)
  • opencv调用摄像头报错(-215:Assertion failed) size.width>0 && size.height>0 in function ‘cv::imshow‘

    我使用OpenCV调用摄像头时报错: 问题分析如下: error提示断言失败了,因为读入图片的宽和高至少有一样不大于0。 报错代码如下: 改进方案: 运行结果: Nice!顺利运行! 备注: 我在CSDN找到了许多方法,但都未得到解决,最终请教大佬得已解决,与遇到相同问题的诸位分

    2024年02月12日
    浏览(51)
  • cv2导入失败原因及安装opencv后仍报错的解决方式

            对于python而言,在引用opencv库的时候需要写为import cv2。其中,cv2是opencv的C++命名空间名称,使用它来表示调用的是C++开发的opencv的接口。如果没有下载opencv库的话,直接导入cv2会报错:ModuleNotFoundError:No module named \\\'cv2\\\'。         直接pip install cv2是不行的,会报错

    2024年02月05日
    浏览(135)
  • opencv:报错解决:cv2.face.LBPHFaceRecognizer_create() AttributeError: module ‘cv2‘ has no attribute ‘face

    ( 可以直接跳过这一段 ):真的很激动啊,这个问题我搞了至少两个小时。先让我描述一下这个过程当我在b站上学习了opencv的人脸识别:读取图片、图片灰度化、修改图片尺寸、绘制矩形框、检测单or多张人脸、检测视频中的人脸都没有问题时!我卡在了 训练数据 这一块。

    2023年04月25日
    浏览(53)
  • Jupyter Notebook之添加anaconda环境

    创建新的 Anaconda 环境: 打开 Anaconda Prompt(或命令行界面。 创建一个新的环境,使用命令如 conda create -n yourenvname python=x.x anaconda,其中 yourenvname 是您的环境名,x.x 是 Python 版本。 激活新环境: 在 Anaconda Prompt 中激活新环境,使用命令 conda activate yourenvname。 安装 Jupyter Noteb

    2024年01月21日
    浏览(44)
  • Jupyter Notebook之移除anaconda环境

    查找内核的确切名称: 首先,需要找出想要移除的内核的名称。打开 Anaconda Prompt 或命令行,并输入 jupyter kernelspec list 。这将显示所有安装的内核及其对应的路径。 移除内核: 使用得到的内核名称,运行 jupyter kernelspec uninstall yourenvname,其中 yourenvname 是要移除的内核的名称

    2024年01月17日
    浏览(44)
  • cv2.imshow error: (-2:Unspecified error) The function is not implemented.问题解决

    在运行opencv的python代码时,调用cv2.imshow时报错,如下所示 cv2.imshow(opencv_title, out) cv2.error: OpenCV(4.5.5) D:aopencv-pythonopencv-pythonopencvmoduleshighguisrcwindow.cpp:1268: 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 Deb

    2024年02月16日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包