簡體   English   中英

如何在opencv2 python中調整window的大小

[英]How to resize window in opencv2 python

我正在使用帶有網絡攝像頭的 opencv 2。 我可以獲取視頻 stream 並對其進行處理,但我似乎無法找到調整顯示 window 大小的方法。我有一些水平堆疊的視頻圖像,但圖像尺寸非常小,很難看清東西。

我的代碼非常簡單,大致如下:

cv2.namedWindow("main")

....

result = np.hstack((res2, foreground))
result = np.hstack((ff, result))

cv2.imshow("main", result)
cv2.waitKey(20)

opencv 文檔指出:

namedWindow
flags – Flags of the window. Currently the only supported flag is CV_WINDOW_AUTOSIZE . If this is set, the window size is automatically adjusted to fit the displayed image (see imshow() ), and you cannot change the window size manually.

但是 qt 后端顯然有額外的標志。 我沒有 qt 后端。 有沒有辦法增加圖像的大小以便我可以看到它們?

是的,不幸的是,如果沒有 Qt 后端,您無法手動調整nameWindow窗口的大小。 您的選擇:

  • 在顯示圖像之前使用cv2.resize函數將圖像調整為所需的大小
  • 安裝帶有 Qt 后端支持的 OpenCV 並使用cv2.namedWindow("main", CV_WINDOW_NORMAL)

簡單地寫

cv2.namedWindow("main", cv2.WINDOW_NORMAL)

然后手動將其調整為您想要的大小

cv2.resizeWindow('image', 900, 900) 

您可以在調用namedWindow函數時使用WINDOW_NORMAL標志,如下所示。 這將允許您調整窗口大小。

namedWindow("Image", WINDOW_NORMAL);

檢查 此處記錄的namedWindow函數

對我有用的是調整圖像而不是窗口大小(我從來沒有設法讓窗口調整大小工作):

import cv2

img = cv2.imread('your_image.jpg')
res = cv2.resize(img, dsize=(500,500), interpolation=cv2.INTER_CUBIC)
cv2.namedWindow("Resized", cv2.WINDOW_NORMAL)
cv2.imshow("Resized", res)

它必須與電腦攝像頭的分辨率一起運行此代碼以確認

cap = cv2.VideoCapture(0)
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
print(width, height)

最有可能是 640 x 480 像素。 您可能必須減小圖像的大小以適合屏幕

根據文檔,您需要使用 autosize true 創建窗口。

cv2.namedWindow("main", cv2.WINDOW_AUTOSIZE)

您對 imshow 的調用將自動調整窗口大小以適合您的圖像。

暫無
暫無

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

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