我正在opencv python
项目raspberry pi 4
(pi)上工作。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
,所以我将它分成两个相等的部分,保持高度相同。这个frame
将在右侧显示视频提要。我还创建了frame2
,它将在左侧显示信息。我还将它的宽度保持为400
,不知道如何在这里设置高度。运行此代码时,我得到以下输出:
正如您所看到的,输出帧被等分为两部分,宽度为400,但高度已减少到300,正如打印输出所示
Frame 300, 400
Frame2 300, 400
有人能解释一下为什么身高被降低到300
而不是480
吗。有没有办法把高度保持在480
。请帮忙。谢谢
imutils.resize
实际上不会使用所需的宽度和高度来调整图像的大小。它使用一个或另一个来缩放图像。由于函数中的逻辑,它优先于宽度而不是高度,因此所需图像的宽度调整为400,但高度调整为300,以保持原始帧的纵横比不变。换句话说,它以保持纵横比的方式调整图像大小。我在这里的OpenCV论坛上找到了imutils.resize
的源代码:https://answers.opencv.org/question/208857/what-is-the-difference-between-cv2resize-and-imutilsresize/如果您希望将图像大小调整为} :
480 x 400
,请使用^{相关问题 更多 >
编程相关推荐