在python-opencv中获取视频维度

kar*_*njo 17 python video opencv

我可以得到图像的大小,像这样:

import cv2

img = cv2.imread('my_image.jpg',0)
height, width = img.shape[:2]
Run Code Online (Sandbox Code Playgroud)

视频怎么样?

fur*_*ras 26

它提供了widthheight文件或相机作为浮动的(所以你可能要转换为整数)

但它总是给我0.0 FPS.

import cv2

vcap = cv2.VideoCapture('video.avi') # 0=camera

if vcap.isOpened(): 
    # get vcap property 
    width  = vcap.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)  # float
    height = vcap.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT) # float

    # or
    width  = vcap.get(3) # float
    height = vcap.get(4) # float

    # it gives me 0.0 :/
    fps = vcap.get(cv2.cv.CV_CAP_PROP_FPS)
Run Code Online (Sandbox Code Playgroud)

它似乎可以工作fps = vcap.get(7)但我只检查一个文件.

  • 注意,`cv2.cv.CV_*`命名空间现在是空的.只需引用`cv2.*`. (5认同)
  • @furas请参阅/sf/ask/3351771/。在我看来,大多数进入此页面的人都不是职业程序员,而是数据科学家或其他人员。因此不会看出这其中的错误。是的,这样写是可行的,但它会使代码不可读。这些名字的存在是有原因的。 (2认同)

小智 14

width = vcap.get(cv2.CAP_PROP_FRAME_WIDTH )
height = vcap.get(cv2.CAP_PROP_FRAME_HEIGHT )
fps =  vcap.get(cv2.CAP_PROP_FPS)
Run Code Online (Sandbox Code Playgroud)

要么

width = vcap.get(3)
height = vcap.get(4)
fps = vcap.get(5)
Run Code Online (Sandbox Code Playgroud)


小智 10

对于3.3.1版本,方法已更改.请在此链接中查看更改:https://docs.opencv.org/3.3.1/d4/d15/group__videoio__flags__base.html#ga023786be1ee68a9105bf2e48c700294d

而不是从上面的链接中cv2.cv.CV_CAP_PROP_FRAME_WIDTH使用cv2.CAP_PROP_FRAME_WIDTH和其他必要的.