我在网上搜索过但无法找到答案,所以我想我可以在这里询问专家。无论如何在OpenCV中获得当前的窗口分辨率?我已经尝试过传入窗口的命名实例的cvGetWindowProperty,但是我找不到要使用的标志。
非常感谢任何帮助。
答案 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)