为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 OpenCV Python 中设置框架高度和宽度

如何在 OpenCV Python 中设置框架高度和宽度

回首忆惘然 2022-12-27 10:09:26
我正在从事(pi)的opencv python项目。raspberry pi 4Pi 连接到具有分辨率的屏幕800x480。Picamera 还连接到 pi 以获取实时视频源。我需要在框架的右侧显示视频源,在框架的左侧显示一些信息。为此,我有以下代码:frame = cap.read()frame = imutils.resize(frame, width=400, height=480)frame2 = np.zeros((frame.shape[0], 400, frame.shape[2]), dtype=frame.dtype)(H, W) = frame.shape[:2](H1, W1) = frame2.shape[:2]print("Frame {}, {}".format(H, W))print("Frame2 {}, {}".format(H1, W1))cv2.putText(frame2, "Some Information", (5, 30), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (0, 0, 255), 1)cv2.putText(frame2, "More Information", (5, 60), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (0, 0, 255), 1)cv2.putText(frame2, "Some More Information", (5, 90), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (0, 0, 255), 1)image = np.hstack((frame2, frame))cv2.namedWindow(win_name, cv2.WINDOW_NORMAL)cv2.setWindowProperty(win_name, cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)cv2.imshow(win_name, image)key = cv2.waitKey(1) & 0xFFif key == ord("q"):    break代码解释:我调整frame了大小,400x480因为我们拥有的总宽度是800,所以我将把它分成两个相等的部分,保持高度相同480。这frame将在右侧显示视频源。我还创建了frame2它,它将在左侧显示信息。我也将它的宽度保持为400,不知道如何设置高度。运行这段代码我得到以下输出:如您所见,输出帧被平均分为宽度为 400 的两部分,但高度已减少到 300,如打印输出所示Frame 300, 400 Frame2 300, 400任何人都可以解释为什么高度减少到300而不是480. 有什么办法可以将高度保持在480. 请帮忙。谢谢
查看完整描述

1 回答

?
PIPIONE

TA贡献1829条经验 获得超9个赞

imutils.resize实际上并没有使用所需的宽度和高度来调整图像的大小。它使用一个或另一个来缩放图像。由于函数中的逻辑,它优先于宽度而不是高度,因此所需图像的宽度调整为 400,但高度调整为 300 以保持原始帧的纵横比不变。换句话说,它以保持纵横比的方式调整图像大小。我在这里找到了imutils.resizeOpenCV 论坛的来源:https ://answers.opencv.org/question/208857/what-is-the-difference-between-cv2resize-and-imutilsresize/

如果您希望将图像的大小调整为480 x 400,请cv2.resize改用:

frame = cv2.resize(frame, (400, 480))


查看完整回答
反对 回复 2022-12-27
  • 1 回答
  • 0 关注
  • 129 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信