簡體   English   中英

如何在 OpenCV Python 中設置框架高度和寬度

[英]How to set frame height and width in OpenCV Python

我正在研究raspberry pi 4 (pi) 上的opencv python項目。 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 ,不知道如何設置高度。 運行此代碼,我得到低於 output:

在此處輸入圖像描述

如您所見,output 框架被平均分為兩部分,寬度為 400,但高度已減少到 300,如打印 output 所說

Frame 300, 400
Frame2 300, 400

誰能解釋一下為什么高度減少到300而不是480 有什么辦法可以將高度保持在480 請幫忙。 謝謝

imutils.resize實際上並沒有通過使用所需的寬度和高度來調整圖像的大小。 它使用一個或另一個來縮放圖像。 由於 function 中的邏輯,它優先於寬度而不是高度,因此所需的圖像被調整為 400 的寬度,但高度被調整為 300 以保持原始幀的縱橫比不變。 換句話說,它以保留縱橫比的方式調整圖像大小。 I found the source for imutils.resize from OpenCV forums here: 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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM