Python OpenCV 3.2 imshow()没有包含waitKey(0)的图像内容!

Python OpenCV 3.2 imshow()没有包含waitKey(0)的图像内容!,python,opencv,opencv3.2,Python,Opencv,Opencv3.2,我从安装了OpenCV3.2+python3.6.1。(对于指南I中所需的路径,请键入: 编辑:我不确定,但我想我应该在3.6而不是3.6.1下安装opencv,请不要使用我的路径进行安装 及 我的测试代码与完全相同,但输出屏幕只显示标题: import numpy as np import cv2 img = cv2.imread('1.jpg',0) cv2.imshow('image', img) cv2.waitKey(0) 结果是: 如图所示,图像内容缺失 它似乎与我的pyt

我从安装了OpenCV3.2+python3.6.1。(对于指南I中所需的路径,请键入:


编辑:我不确定,但我想我应该在3.6而不是3.6.1下安装opencv,请不要使用我的路径进行安装


我的测试代码与完全相同,但输出屏幕只显示标题:

import numpy as np
import cv2

img = cv2.imread('1.jpg',0)
cv2.imshow('image', img)
cv2.waitKey(0)
结果是:

如图所示,图像内容缺失

它似乎与我的python有关,图标已损坏:

请帮帮我!我只想把opencv用于我的学校项目



如果您遇到相同的问题,我可以解决您的问题。但在执行任何进一步的步骤之前,您应该先看一看:

  • 我建议您首先从mac上删除OpenCV 3.2

    不知道如何删除?以下是步骤:

  • 如果要了解以下命令的详细功能,请先阅读,然后在终端中运行以下命令:

    $> sudo find / -name "*opencv*" -exec rm -i {} \;
    
    $> ls -l /usr/local/lib/python3.6/site-packages/
    
  • 请仔细阅读每一条删除检查消息,或者您可以删除文件名中包含“opencv”的部分文件,这些文件可能与opencv无关,但可能是您的个人文件。

  • 您的cv2.so仍将在磁盘中的某个位置处于活动状态,请在终端中使用以下命令进行签出:

    $> sudo find / -name "*opencv*" -exec rm -i {} \;
    
    $> ls -l /usr/local/lib/python3.6/site-packages/
    
    在我的例子中,我找到了cv2.0,在
    ../python3.6/..
    上,你应该在
    /usr/local/lib/python
    上按“tab”,然后检查每个python版本的
    站点包
    文件夹(可能你将要重新安装OpenCV),以搜索cv2。如果你找到了它,请删除它

  • .只需遵循所有步骤,并记住自制是您最好的朋友

    编辑:该链接适用于Python2.7和3.6


  • 我遇到了类似的问题,但是在C++ API的角度上。 Windows autosize不适用于使用cocoa的macOS。找不到窗口的图像尺寸。已通过删除Window_cocoa.mm中的IP64特定合成来修复此问题,该合成导致cvShowImage中窗口的contentView图像属性引用为空(图像引用未链接到_图像)

    简而言之,OpenCV试图同时支持32位和64位ObjC编译器,但由于Apple不再支持32位,一些图像合成操作导致64位计算机中出现空引用。更多信息

    要解决这个问题,请找到文件窗口_cocoa.mm;如果是从源代码构建的,它将位于opencv/modules/highgui/src中

    更改此设置

    @implementation CVView
    #if defined(__LP64__)
    @synthesize image;
    #else // 32-bit Obj-C does not have automatic synthesize
    @synthesize image = _image;
    #endif
    
    @implementation CVView
    @synthesize image = _image;
    
    到此

    @implementation CVView
    #if defined(__LP64__)
    @synthesize image;
    #else // 32-bit Obj-C does not have automatic synthesize
    @synthesize image = _image;
    #endif
    
    @implementation CVView
    @synthesize image = _image;
    
    CVWindow
    CVSlider
    实现执行相同的操作,以容纳视频


    重新编译OpenCV并测试您的代码。

    图标与此无关,我的图标工作正常,图标仍然显示为这样。前几天有人遇到了同样的问题。我找不到问题,但在我看到它时没有答案。作为脚本而不是在I中运行它时,您是否也遇到了同样的问题Interpreter?如果
    cv2
    导入很好(显然是这样)那么我认为你的安装没有问题。我非常感谢你的友好回复,首先非常感谢你。我很高兴知道你刚才提供的信息。现在我只是删除它,然后通过自制程序用python2.7重新安装。是的,我两种方法都试过了。:@AlexanderReynoldsHmm,我用
    python3.6.1
    opencv3.2.0
    安装了相同的教程。当然,在2.7中试一试,看看你的结果是什么。你有没有测试过
    cv2.imwrite()
    是否有效?没有,实际上我是OpenCV新手。我只是阅读了文档/教程并遵循了它。安装完成后,我将尝试您的建议。:)@AlexanderReynoldsIf如果他试图用Python的现代版本安装OpenCV,你为什么建议他用Python的旧版本安装?你完全可以在Mac上使用OpenCV 3.2.0和Python3.6.1,很抱歉我的话有误导性。但实际上,我提供的链接可以同时适用于Python2.7和Python3.6,并且该链接已经逐步允许读者为这两个版本进行设置@AlexanderReynoldsAh——您应该编辑链接文本,因为它链接到2.7和3的教程。仅供参考,这是OP最初使用的教程。