Python在调用cv2.imshow()时出现的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python在调用cv2.imshow()时出现的问题相关的知识,希望对你有一定的参考价值。

具体报错如下:Traceback (most recent call last):
File "C:/untitled1/main.py", line 71, in <module>
cv2.imshow('result',x)
TypeError: mat data type = 15 is not supported

代码如下:
for i in range(0,6):
x=Eig_faces[:][i].reshape(img_height, img_width)
cv2.imshow('result',x)

python小白求大佬指教,怎么改都不对,呜呜呜呜

参考技术A 先到文末下载opencv的安装包。其实这个安装包就是一个解压缩。
我们在安装包解压的目录找到这个文件
把这个文件拷贝到python的包安装目录下面
在python的shell导入cv2模块试试,看是不是安装好了。结果提示还需要安装一个依赖包
好吧,还好之前有这个numpy的安装包,直接安装
参考技术B 提供的代码太少了。
试下 cv2.imshow('test.png',img)本回答被提问者采纳

cv2.imshow命令在opencv-python中无法正常工作

我正在使用opencv 2.4.2,python 2.7以下简单代码创建了一个正确名称的窗口,但其内容只是空白而不显示图像:

import cv2
img=cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('ImageWindow',img)

有谁知道这个问题?

答案

imshow()仅适用于waitKey()

import cv2
img = cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('ImageWindow', img)
cv2.waitKey()

(更新窗口所需的整个消息循环都隐藏在那里。)

另一答案

如果你选择使用“cv2.waitKey(0)”,请确保你写了“cv2.waitKey(0)”而不是“cv2.waitkey(0)”,因为小写的“k”也可能冻结你的程序。

另一答案

错误:(-215)size.width> 0 && size.height> 0 in function imshow

产生此错误是因为找不到图像。所以它不是imshow函数的错误。

另一答案

我在这里找到了适合我的答案:http://txt.arboreus.com/2012/07/11/highgui-opencv-window-from-ipython.html

如果您运行交互式ipython会话,并且想要使用highgui窗口,请首先执行cv2.startWindowThread()。

详细说明:HighGUI是一个简化的界面,用于显示OpenCV代码中的图像和视频。它应该像以下一样简单:

import cv2
img = cv2.imread("image.jpg")
cv2.startWindowThread()
cv2.namedWindow("preview")
cv2.imshow("preview", img)
另一答案

你必须在cv2.waitKey(0)之后使用cv2.imshow("window",img)。只有这样才能奏效。

import cv2
img=cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('Window',img)
cv2.waitKey(0)
另一答案

我遇到了同样的问题。我试图从IDLE读取图像并尝试使用cv2.imshow()显示它,但显示窗口冻结并显示pythonw.exe在尝试关闭窗口时没有响应。

下面的帖子给出了为什么会发生这种情况的可能解释

pythonw.exe is not responding

“基本上,不要从IDLE执行此操作。编写脚本并在shell中直接运行它,如果在Windows中,通过使用.pyw扩展名命名并双击它。在IDLE自己的事件之间显然存在冲突循环和GUI工具包中的循环。“

当我在脚本中使用imshow()并执行它而不是直接在IDLE上运行时,它起作用了。

另一答案

如果您在Python控制台中运行,请执行以下操作:

img = cv2.imread("yourimage.jpg")

cv2.imshow("img", img); cv2.waitKey(0); cv2.destroyAllWindows()

然后,如果您在图像上按Enter键,它将成功关闭图像,您可以继续运行其他命令。

另一答案

最后添加cv2.waitKey(0)

另一答案

你在这个帖子中的某个地方有所有必要的部分:

if cv2.waitKey(): cv2.destroyAllWindows()

在IDLE中对我来说很好。

另一答案

对我来说,数字大于0的waitKey()工作

    cv2.waitKey(1)
另一答案

如果你没有使这个工作,你最好放

import cv2
img=cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('Window',img)
cv2.waitKey(0)

到一个文件并运行它。

以上是关于Python在调用cv2.imshow()时出现的问题的主要内容,如果未能解决你的问题,请参考以下文章

为啥在 Jupyter 笔记本中调用 cv2.imshow() 时出现无响应窗口

Python-OpenCV:cv2.imread(),cv2.imshow(),cv2.imwrite()

为啥我用pycharm的cv2.imshow会报错,一直没有解决,要自闭了?

imshow() 在 Python 中为图像提供错误

cv2.imshow命令在opencv-python中无法正常工作

Google Colab调用cv2.imshow奔溃