我在网上搜索过但无法找到答案,所以我想我可以在这里询问专家.无论如何在OpenCV中获得当前的窗口分辨率?我已经尝试过传递窗口的命名实例的cvGetWindowProperty,但是我找不到要使用的标志.
任何帮助将不胜感激.
小智 5
您可以分别使用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)
嗯......这并不是一个很好的答案(相当黑客!),但你总是可以打电话cvGetWindowHandle。有了这个本机窗口句柄,我相信您可以找出一些本机调用来获取所包含的图像大小。丑陋,黑客,而且不太便携,但鉴于我对 OpenCV 的了解有限,这是我能建议的最好的。