获取OpenCV中窗口的大小

时间:2011-07-11 19:00:14

标签: c opencv

我在网上搜索过但无法找到答案,所以我想我可以在这里询问专家。无论如何在OpenCV中获得当前的窗口分辨率?我已经尝试过传入窗口的命名实例的cvGetWindowProperty,但是我找不到要使用的标志。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

嗯......这不是一个很好的答案(非常黑客!),但你可以随时拨打cvGetWindowHandle。使用该本机窗口句柄,我确信您可以找出一些本机调用来获取包含的图像大小。丑陋,笨拙,不太便携,但鉴于我有限的OpenCV暴露,这是我能提出的最佳建议。

答案 1 :(得分:0)

您可以使用 shape [1] shape [0]获取窗口内容的宽度高度 ] 。 我认为当您使用Open CV时,来自摄像机的图像将存储为Numpy数组,其形状为[rows,cols,bgr_channels],例如[480,640,3]

代码,例如

import cv2 as cv2

cv2.namedWindow("myWindow")

cap = cv2.VideoCapture(0) #open camera
ret,frame = cap.read() #start streaming

windowWidth=frame.shape[1]
windowHeight=frame.shape[0]
print(windowWidth)
print(windowHeight)

cv2.waitKey(0) #wait for a key
cap.release() # Destroys the capture object
cv2.destroyAllWindows() # Destroys all the windows


console output:
640
480

您还可以调用 getWindowImageRect(),它会获得一个完整的矩形:x,y,w,h

例如

import cv2 as cv2

cv2.namedWindow("myWindow")

cap = cv2.VideoCapture(0) #open camera
ret,frame = cap.read() #start streaming

windowWidth=cv2.getWindowImageRect("myWindow")[2]
windowHeight=cv2.getWindowImageRect("myWindow")[3]

print(windowWidth)
print(windowHeight)

cv2.waitKey(0) #wait for a key
cap.release() # Destroys the capture object
cv2.destroyAllWindows() # Destroys all the windows

-which very curiously printed 800 500 (the actual widescreen format from the camera)