web-dev-qa-db-ja.com

python-opencvでビデオの寸法を取得する

次のように、画像のサイズを取得できます。

import cv2

img = cv2.imread('my_image.jpg',0)
height, width = img.shape[:2]

ビデオはどうですか?

15
karavanjo

ファイルまたはカメラのwidthおよびheightをfloatとして提供します(したがって、整数に変換する必要があります)

ただし、常に_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)
_

fps = vcap.get(7)は機能するようですが、これは1つのファイルでのみ確認しました。

22
furas
width = vcap.get(cv2.CAP_PROP_FRAME_WIDTH )
height = vcap.get(cv2.CAP_PROP_FRAME_HEIGHT )
fps =  vcap.get(cv2.CAP_PROP_FPS)

または

width = vcap.get(3)
height = vcap.get(4)
fps = vcap.get(5)
14
Evan

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およびその他の必要に応じて上記のリンクから。

9
cv2.__version__
'3.4.3' 

w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
h = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = int(cap.get(cv2.CAP_PROP_FPS))
n_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
3
mrgloom

vcap.get(i)メソッドを使用できます。iは0〜21 、OpenCV docs によると。

0