当前位置: 首页 > 知识库问答 >
问题:

imshow窗口已关闭

皮安顺
2023-03-14

所以我的问题是:我通常把我的笔记本电脑连接到外部屏幕上,一切正常,直到我需要把我的笔记本电脑带到大学去做进度报告。当我的笔记本电脑没有连接到外部屏幕时,imshow显示的窗口在底部被切断,如图所示。

以前有人遇到过这个问题吗?如果有,你能分享如何解决这个问题吗?我的笔记本电脑使用windows 10,python 3.6.4和opencv 3.3.0。

我当前的代码有点长,所以我将在这里给出流程:使用imread读取图像,从中裁剪ROI,使用cvtColor将ROI转换为灰度,使用cv2添加遮罩过滤颜色。在Range中,使用按位_对灰度图像应用遮罩,然后使用getPerspectiveTransform和warpPerspective进行透视更改,使用imwrite保存图像,最后使用imshow和waitkey显示结果。

下面是每个步骤的代码示例行。

“image”和“gray”是480x360图像,“cropped”和“white_lanes”是480x150图像,mapped是480x550图像

我的代码:

image = cv2.imread(args["data"])

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

cropped = gray[210:360]

mask_white = cv2.inRange(cropped, 220, 255)

white_lanes = cv2.bitwise_and(cropped, mask_white)

M = cv2.getPerspectiveTransform(pts1, pts2)

mapped = cv2.warpPerspective(white_lanes, M, (wlwidth+2*expansionx, wlheight+expansiony))

filename=args["data"][11:-4]

cv2.imwrite("cropmap{}.jpg".format(filename), cropmap)

cv2.imshow("Cropped Gray Image", cropped)

cv2.waitKey(0)

共有1个答案

萧安怡
2023-03-14

在您的代码中,您显示cv2.imshow(裁剪的灰色图像,裁剪),但不是cv2.imshow(映射图像,映射),这在您发布的图像中清楚地显示。

您执行的映射=cv2.warp透视(white_lanes, M,(wlWede2*扩展名x, wlWehedeExportsiony))任务,但在代码中不显示维度。因此很难判断它是否适合你的笔记本电脑屏幕尺寸。

因此添加...

resized\u mapped\u image=cv2。调整大小(映射,(0,0),fx=0.5,fy=0.5))

..然后cv2。imshow(“映射图像”,已调整大小的映射图像)

…这将使图像缩小一半并解决问题。

否则…:

  1. 你的图像数组大小在M=cv2.get透视变换(pts1,pts2)之前看起来怎么样?
  2. 检查每个后续步骤...
  3. 此外,裁剪后显示图像...但是显示的图像显示x轴上的值...这与cv2.imshow(裁剪的灰色图像,裁剪)作为cv2.imshow("映射图像",映射)应替换为cv2.imshow("裁剪的灰色图像",裁剪)...但它只显示裁剪版本......
 类似资料:
  • 我正在IE上测试。单击后,我切换到子窗口,但无法返回父窗口,出现错误“窗口已关闭”。

  • 问题内容: 我正在研究一些计算机视觉算法,我想展示一个numpy数组在每个步骤中如何变化。 现在有效的是,如果我在代码末尾有一个简单的代码,则该窗口将显示并显示最终图像。 但是,我想做的是在每次迭代中更改图像时更新并显示imshow窗口。 因此,例如,我想这样做: 问题在于,只有完成整个计算后,Matplotlib窗口才会被激活。 我已经尝试了原生matplotlib和pyplot,但是结果是一样

  • 我的当前程序将向用户输出图像,并根据用户输入,根据需要重新调整图像。 长话短说,我试图在图像文件中找到圆形对象。我将使用Hough圆变换。然而,因为我在图像中的许多圆不是“完美圆”,所以我正在做一个“猜测”圆半径的算法。但是,我希望允许用户根据需要重新调整半径。 有没有办法要求用户输入,然后根据用户输入,重新调整imshow()中的窗口?现在,imshow()拒绝显示实际的窗口,直到我使用cv2.

  • System.SetProperty(“webdriver.ie.driver”,“D:\selenium\jars\iedRiverServer\iedRiverServer.exe”); WebDriver驱动程序=新建InternetExplorerDriver(); driver.manage().timeouts().implicitlywait(30,TimeUnit.seconds)

  • 我试图在我的JavaFX2应用程序中添加一个图标,但是我找到的方法似乎不起作用。 图标的大小是32x32。 当我尝试 我希望这个能修好。

  • 问题内容: 最终编辑: 我在关闭pyplot窗口这一主题上发现,实际上可能不应该使用pyplot完成它。SRK给出了一个很好的示例,说明如何处理将在下面的答案中更新的图。我也偶然发现了如何将pyplot图放到Tkinter窗口中,并且Tkinter比pyplot更擅长打开和关闭窗口。这里是怎样把一个pyplot情节变成Tk的窗口, /最终编辑 我希望能够显示多个图,然后能够从某些代码输入中分别关闭