imshow窗口被截止

时间:2018-03-12 12:11:29

标签: opencv imshow

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

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

我目前的代码有点长,所以我将在这里给出流程: 使用imread读取图像,从中裁剪ROI,使用cvtColor将ROI转换为灰度,使用cv2.inRange添加遮罩以过滤掉颜色,使用bitwise_and将该遮罩应用于灰度图像,然后使用getPerspectiveTransform和warpPerspective,用imwrite保存图像,最后用imshow和waitkey显示结果。

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

Bottom part is cut off

'图像'和'灰色'是480x360图像,'裁剪'和' white_lanes'是480x150图像,映射是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 个答案:

答案 0 :(得分:0)

在您的代码中,您会显示cv2.imshow("Cropped Gray Image", cropped)但不显示cv2.imshow("Mapped Image", mapped),这些内容会在您发布的图片中显示。

您使用mapped = cv2.warpPerspective(white_lanes, M, (wlwidth+2*expansionx, wlheight+expansiony))任务执行但未在代码中显示维度。因此很难判断它是否适合您的笔记本电脑屏幕。

因此添加......

resized_mapped_image = cv2.resize(mapped, (0,0), fx=0.5, fy=0.5))

..然后cv2.imshow("Mapped Image", resized_mapped_image)

..应该将图像缩小一半并解决问题。

...否则:

  1. 您的图像数组大小在M = cv2.getPerspectiveTransform(pts1, pts2)之前看起来如何?
  2. 检查每个后续步骤......
  3. 此外,裁剪后您显示图像...但显示的图像显示x轴上的值...这对cv2.imshow("Cropped Gray Image", cropped)没有意义 因为cv2.imshow("Mapped Image", mapped)应该替换为cv2.imshow("Cropped Gray Image", cropped) ..但是它只显示了裁剪版本....