python - 如何在 OpenCV Python 中设置帧的高度和宽度
问题描述
我正在研究(pi)上的opencv python
项目。raspberry pi 4
Pi 连接到具有分辨率的屏幕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) & 0xFF
if key == ord("q"):
break
代码说明:
我调整frame
了大小,400x480
因为我们拥有的总宽度是800
所以我将它分成两个相等的部分,保持高度相同480
。这frame
将在右侧显示视频源。我还创建了frame2
它将在左侧显示信息。我也将其宽度保持为400
,不知道如何在其中设置高度。运行此代码,我得到以下输出:
如您所见,输出帧被平均分为宽度为 400 但高度已减小到 300 的两部分,如打印输出所示
Frame 300, 400
Frame2 300, 400
谁能解释为什么高度减少到300
而不是480
。有什么办法可以保持高度480
。请帮忙。谢谢
解决方案
imutils.resize
实际上并没有通过使用所需的宽度和高度来调整图像的大小。它使用一个或另一个来缩放图像。由于函数中的逻辑,它优先于宽度而不是高度,因此所需图像的宽度被调整为 400,但高度被调整为 300 以保持原始帧的纵横比不变。换句话说,它以保留纵横比的方式调整图像大小。我在imutils.resize
这里找到了来自 OpenCV 论坛的来源: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))
推荐阅读
- image - SixLabors:将 img 颜色空间转换为 sRGB
- java - Java对方法返回值的拆箱
- scala - gradle 将多模块项目发布到 AWS Artifact 仅发布 META-INF
- delphi - 通用 TObjectlist 操作 Delete 和 Move 对后代来说是类型安全的吗?
- python - 使用 Win32clipboard.GetClipboardData 获取复制的 excel 表在多行后返回汉字?
- azure - 微软云,如何对 API 进行身份验证
- python - Django多对多自动填充用户
- c# - 如何设置我的环境以将谷歌地图与带有 react/redux 项目的 asp.net 一起使用?
- reactjs - 嵌套数组形式 - onChange 处理程序渲染缓慢 - 不变性助手
- r - R闪亮的dygraph不渲染