所以我的问题是:我通常将笔记本电脑连接到外部屏幕,一切正常,直到我需要将笔记本电脑带到大学进行进度报告。当我的笔记本电脑没有连接到外部屏幕时,imshow显示的窗口在底部被切断,如图所示。
以前有人遇到过这个问题吗?如果是这样,你能分享如何解决这个问题吗?我的笔记本电脑使用的是Windows 10,python 3.6.4和opencv 3.3.0。
我目前的代码有点长,所以我将在这里给出流程: 使用imread读取图像,从中裁剪ROI,使用cvtColor将ROI转换为灰度,使用cv2.inRange添加遮罩以过滤掉颜色,使用bitwise_and将该遮罩应用于灰度图像,然后使用getPerspectiveTransform和warpPerspective,用imwrite保存图像,最后用imshow和waitkey显示结果。
以下是每个步骤的示例代码行。
'图像'和'灰色'是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)
答案 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)
..应该将图像缩小一半并解决问题。
...否则:
M = cv2.getPerspectiveTransform(pts1, pts2)
之前看起来如何?cv2.imshow("Cropped Gray Image", cropped)
没有意义
因为cv2.imshow("Mapped Image", mapped)
应该替换为cv2.imshow("Cropped Gray Image", cropped)
..但是它只显示了裁剪版本....