首页 文章

imshow窗口是截止的

提问于
浏览
0

所以我的问题是:我通常将笔记本电脑连接到外部屏幕,一切正常,直到我需要将笔记本电脑带到大学进行进度报告 . 当我的笔记本电脑没有连接到外部屏幕时,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

'image'和'gray'是480x360图像,'cropped'和'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

    在您的代码中,您显示 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)

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

    除此以外...:

    • 你的图像数组大小在 M = cv2.getPerspectiveTransform(pts1, pts2) 之前是如何看的?

    • 检查每个后续步骤......

    • 此外,在裁剪后你显示图像...但显示的图像显示x轴上的值...这对 cv2.imshow("Cropped Gray Image", cropped) 没有意义,因为 cv2.imshow("Mapped Image", mapped) 应该用 cv2.imshow("Cropped Gray Image", cropped) 替换..但是它只显示了裁剪版本....

相关问题