cv2.imshow()在Mac上崩溃了

时间:2017-09-21 16:32:49

标签: python macos opencv ipython cv2

当我在 string findGuid = "hi Aether experiment 1481de3f-281e-9902-f98b-31e9e422431f @sdfsf 1481de3f-281e-9902-f98b-31e9e422431f"; //Initialize a new string value var guids = Regex.Matches(Regex.Split(findGuid, "@")[0], @"(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}")[0]; //Match all substrings in findGuid

上运行这段代码时
ipython (MacOS /python 2.7.13)

内核崩溃了。当图像出现时,我可以按下的唯一按钮是cv2.startWindowThread() cv2.imshow('img', img) cv2.waitKey() cv2.destroyAllWindows() (中间的按钮,当我按任意键时,旋转的轮子出现,我唯一能做的就是强制退出。

P.S。我已经通过minimise下载了最新的python版本。

4 个答案:

答案 0 :(得分:4)

你只是想看看这张照片吗?我不确定你想用startWindowThread做什么,但如果你想以最简单的方式安装opencv,打开图片,然后查看它试试这个:

安装conda(opencv比自制软件更好的软件包管理器)

然后创建一个简洁的环境:

conda create -n cv

激活它并从menpo的频道安装opencv

source activate cv
conda install -c menpo opencv

然后在python中(点击q退出):

import cv2
cv2.namedWindow('imageWindow')
img = cv2.imread('path/to/your/image.png')
cv2.imshow('imageWindow',img)
wait = True
while wait:
  wait = cv2.waitKey()=='q113' # hit q to exit

答案 1 :(得分:2)

我已复制了jupyter内核崩溃问题。以下是测试环境设置。

cv2.waitKey()

import cv2 img = cv2.imread('sample.jpg') cv2.startWindowThread() cv2.imshow('img', img) # wait forever, if Q is pressed then close cv image window if cv2.waitKey(0) & 0xFF == ord('q'): cv2.destroyAllWindows() 更改为等待 Q 按下,问题就消失了。

代码如下:

Optional

希望获得帮助。

答案 2 :(得分:2)

遇到了同样的问题,没有找到适合我的解决方案。我只能通过从google colab tools复制此函数来解决它。它不会在新窗口中显示图像,而是在Jupyter笔记本中内联。

import cv2
from IPython import display
from PIL import Image

def cv2_imshow(a):
    """A replacement for cv2.imshow() for use in Jupyter notebooks.
    Args:
    a : np.ndarray. shape (N, M) or (N, M, 1) is an NxM grayscale image. shape
      (N, M, 3) is an NxM BGR color image. shape (N, M, 4) is an NxM BGRA color
      image.
    """
    a = a.clip(0, 255).astype('uint8')
    # cv2 stores colors as BGR; convert to RGB
    if a.ndim == 3:
        if a.shape[2] == 4:
            a = cv2.cvtColor(a, cv2.COLOR_BGRA2RGBA)
        else:
            a = cv2.cvtColor(a, cv2.COLOR_BGR2RGB)
    display.display(Image.fromarray(a))

答案 3 :(得分:1)

我在Mac OS X 10.14.3上拥有最新版本的python(2.7.15)。

为什么我们不能仅将内容保存到文件中并使用命令python filename.py运行它。尽管如此,它仍然相同,并且可以正常工作!

我测试的示例代码是:

import cv2

img = cv2.imread('sample.jpg')

cv2.startWindowThread()
cv2.imshow('img', img)
cv2.waitKey()
cv2.destroyAllWindows()

希望有帮助!