1

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


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


/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/)

我的测试代码与 OpenCV 3.2 文档的教程完全一样,但输出屏幕只显示一个标题:

import numpy as np
import cv2

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

结果:

OpenCV 空图像窗口 如图所示,图片内容缺失。

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

破损的蟒蛇图标

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


4

2 回答 2

1

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

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

    不知道怎么删除?以下是步骤:

    1. 如果您想详细了解以下命令的作用,请先阅读此答案,然后在终端中运行以下命令:

      $> sudo find / -name "*opencv*" -exec rm -i {} \;
      
    2. 请仔细阅读每条删除检查信息,否则您可能会删除一些文件名中包含“opencv”的文件,这些文件可能与OpenCV无关,但可能是您的个人文件。

    3. 您的 cv2.so 仍会在磁盘中的某个位置存在,请在终端中使用以下命令检查它的位置:

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

      在我的情况下,我在 cv2.so 找到了.../python3.6/...,你应该按“tab”/usr/local/lib/python然后检查site-packages每个 python 版本的文件夹(可能你要重新安装 OpenCV)来搜索cv2.so。如果你找到它,删除它。

  2. 为 Python2.7 / 3.6 安装 OpenCV3.2 和 Homebrew。只需按照所有步骤操作,并记住 Homebrew 是您最好的朋友。

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

于 2017-06-10T10:19:25.067 回答
1

我遇到了类似的问题,但从 C++ API 的角度来看。学分去mattmyne

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

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

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

CVWindow对和实现做同样的事情CVSlider以适应视频。

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

于 2017-06-14T19:55:47.340 回答