it-swarm.com.de

Videodimension in Python-opencv abrufen

Ich kann die Größe eines Bildes wie folgt erhalten:

import cv2

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

Wie wäre es mit Video?

9
karavanjo

Es gibt width und height von Datei oder Kamera als Float (daher müssen Sie möglicherweise in eine Ganzzahl konvertieren)

Aber es gibt mir immer 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)

Es scheint, dass es funktionieren kann fps = vcap.get(7), aber ich habe dies nur für eine Datei geprüft.

16
furas

Für die Version 3.3.1 haben sich die Methoden geändert. Überprüfen Sie diesen Link auf die Änderungen: https://docs.opencv.org/3.3.1/d4/d15/group__videoio__flags__base.html#ga023786be1ee68a9105bf2e48c700294d

Verwenden Sie anstelle von cv2.cv.CV_CAP_PROP_FRAME_WIDTHcv2.CAP_PROP_FRAME_WIDTH und andere bei Bedarf über den obigen Link. 

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

oder 

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

Sie können die Methode vcap.get (i) verwenden, wobei i laut zwischen 0 und 21 liegen kann das OpenCV docs .

0
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))
0
mrgloom