【问题标题】:Get the size of a window in OpenCV在 OpenCV 中获取窗口的大小
【发布时间】:2011-10-03 01:27:19
【问题描述】:

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

任何帮助将不胜感激。

【问题讨论】:

  • 您可以设置 OpenCV 窗口的大小,您能否说明一下为什么需要获取该大小?这意味着如果您已经创建了它和/或调整了它的大小,那么您应该已经能够知道它的大小。
  • 我在后台运行一些依赖于屏幕分辨率的算法。无论提要来自视频还是网络摄像头,我都需要尺寸信息。我总是可以硬编码大小并解决这个问题,但是如果我动态加载不同的视频,或者如果我正在接受各种网络摄像头分辨率,我想自动获取信息,而不是为所有内容设置设定大小.
  • @aardvarkk 例如,用于在窗口销毁后为下一次算法迭代(用户可以更改窗口大小)保留窗口几何形状。
  • 答案在stackoverflow.com/questions/11041607/… 结束:在 Win32/not 上使用宏,然后 GetSystemMetrics 或 XOpenDisplay + DefaultScreenOfDisplay

标签: c opencv


【解决方案1】:

可以通过shape[1]shape[0获取窗口内容的widthheight ] 分别。 我认为当您使用 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)

【讨论】:

    【解决方案2】:

    嗯...这不是一个很好的答案(相当骇人听闻!),但您可以随时致电cvGetWindowHandle。使用本机窗口句柄,我相信您可以找出一些本机调用来获取包含的图像大小。丑陋、骇人听闻且不太便携,但鉴于我对 OpenCV 的了解有限,这是我能建议的最佳选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-31
      • 2011-05-22
      • 2012-07-31
      • 1970-01-01
      • 2020-01-16
      • 1970-01-01
      相关资源
      最近更新 更多