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

时间:2017-06-10 05:39:51

标签: python opencv opencv3.2

我从this installation guide安装了OpenCV3.2 + python3.6.1。 (对于我输入的指南所需的路径:

修改:我不确定,但我想我应该安装3.6以下的opencv,而不是3.6.1,请不要使用我的路径进行安装!< / p>

/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/config-3.6m-darwin/libpython3.6.dylib

ls -d /usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/include/python3.6m/)

我的测试代码与the tutorial of OpenCV 3.2 documentation完全相同,但输出屏幕只显示标题:

import numpy as np
import cv2

img = cv2.imread('1.jpg',0)
cv2.imshow('image', img)
cv2.waitKey(0)

结果:

OpenCV empty image window 如图所示,图像内容缺失。

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

broken python icon

请帮帮我!我只想在我的学校项目中使用opencv ......

2 个答案:

答案 0 :(得分:1)

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

  1. 我会建议你先从你的mac 删除 OpenCV 3.2。

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

    1. 如果您想了解以下命令的详细信息,请先阅读this answer,然后在终端中运行以下命令:

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

      请仔细阅读每个删除检查消息,或者您可以删除包含&#34; opencv&#34;的一些文件。在文件名中,可能与OpenCV无关,但可能是您的个人文件。

    3. 你的cv2.so仍会在磁盘的某个地方存活,请在终端中使用以下命令结帐:

      $> ls -l /usr/local/lib/python3.6/site-packages/
      

      就我而言,我在.../python3.6/...找到了cv2.so,你应该按下&#39;标签&#39;在/usr/local/lib/python然后查看每个python版本的site-packages文件夹(可能是您即将重新安装OpenCV),以搜索 cv2.so 。如果找到了,请将其删除。

  2. Install OpenCV3.2 with Homebrew for Python2.7 / 3.6。只需按照所有步骤操作,请记住,Homebrew是您最好的朋友。

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

答案 1 :(得分:1)

我遇到了类似的问题但是在C ++ API的角度来看。积分转到mattmyne

  

使用cocoa,窗口自动调整大小不适用于macOS。找不到窗口的图像尺寸。这已经通过删除window_cocoa.mm中的IP64特定合成来修复,该合成导致cvShowImage中窗口的contentView图像属性的空引用(图像引用未链接到_image)。

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

要解决此问题,请找到文件 window_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;

CVWindowCVSlider实施做同样的事情以适应视频。

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