Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python opencv中获取视频维度_Python_Opencv_Video - Fatal编程技术网

在python opencv中获取视频维度

在python opencv中获取视频维度,python,opencv,video,Python,Opencv,Video,我可以得到图像的大小,如下所示: import cv2 img = cv2.imread('my_image.jpg',0) height, width = img.shape[:2] 视频怎么样?它将文件或相机的宽度和高度表示为浮动(因此您可能需要转换为整数) 但它总是给我0.0fps import cv2 vcap = cv2.VideoCapture('video.avi') # 0=camera if vcap.isOpened(): # get vcap prope

我可以得到图像的大小,如下所示:

import cv2

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

视频怎么样?

它将文件或相机的
宽度
高度
表示为
浮动
(因此您可能需要转换为
整数

但它总是给我
0.0fps

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 `width`
    height = vcap.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT)  # float `height`
    # or
    width  = vcap.get(3)  # float `width`
    height = vcap.get(4)  # float `height`

    # it gives me 0.0 :/
    fps = vcap.get(cv2.cv.CV_CAP_PROP_FPS)

它似乎可以工作,但是我只在一个文件中检查了它


编辑2019:目前
cv2
使用的名称差别不大

cv2.CAP_PROP_FRAME_WIDTH   # 3
cv2.CAP_PROP_FRAME_HEIGHT  # 4

cv2.CAP_PROP_FPS           # 5
cv2.CAP_PROP_FRAME_COUNT   # 7
但是它们有相同的值:
3
4
5
7

import cv2

#vcap = cv2.VideoCapture(0)  # built-in webcamera

vcap = cv2.VideoCapture('video.avi')

if vcap.isOpened(): 
    width  = vcap.get(cv2.CAP_PROP_FRAME_WIDTH)   # float `width`
    height = vcap.get(cv2.CAP_PROP_FRAME_HEIGHT)  # float `height`
    # or
    width  = vcap.get(3)  # float `width`
    height = vcap.get(4)  # float `height`

    print('width, height:', width, height)
    
    fps = vcap.get(cv2.CAP_PROP_FPS)
    # or
    fps = vcap.get(5)
    
    print('fps:', fps)  # float `fps`
    
    frame_count = vcap.get(cv2.CAP_PROP_FRAME_COUNT)
    # or
    frame_count = vcap.get(7)
    
    print('frames count:', frame_count)  # float `frame_count`

    #print('cv2.CAP_PROP_FRAME_WIDTH :', cv2.CAP_PROP_FRAME_WIDTH)   # 3
    #print('cv2.CAP_PROP_FRAME_HEIGHT:', cv2.CAP_PROP_FRAME_HEIGHT)  # 4
    #print('cv2.CAP_PROP_FPS         :', cv2.CAP_PROP_FPS)           # 5
    #print('cv2.CAP_PROP_FRAME_COUNT :', cv2.CAP_PROP_FRAME_COUNT)   # 7


编辑2020:对于3.3.1版本,方法已更改。检查此链接以了解更改:

不要使用
cv2.cv.cv\u CAP\u PROP\u FRAME\u WIDTH
使用
cv2.CAP\u PROP\u FRAME\u WIDTH
和其他必要的链接

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


根据OpenCV,您可以使用vcap.get(i)方法,其中i可以介于0和21之间

对于OpenCV
版本=4.x.x

    width  = vcap.get(cv2.CAP_PROP_FRAME_WIDTH)   
    height = vcap.get(cv2.CAP_PROP_FRAME_HEIGHT)  

您从视频中获得一帧图像,这样您就可以使用
shape
它可以通过CV\u CAP\u PROP\u frame\u WIDTH/CV\u CAP\u PROP\u frame\u HEIGHT对我的文件很好地工作,谢谢。@furas:fps 0是用于一个视频还是用于多个视频?如果有多个,是来自同一个源(同一个摄像头)的视频吗?@saurabheights我检查并
vcap.get(cv2.cv.cv\u CAP\u PROP\u FPS)
http流
rtsp流
有很好的效果,但对文件和摄像头没有效果
vcap.get(7)
对文件提供了很好的结果,但对相机和流没有<代码>7
可能意味着
CV\u CAP\u PROP\u FRAME\u COUNT
。(doc:)@saurabheights我只检查了一个文件-使用CV从某个流创建。注意,
cv2.CV.CV.*
名称空间现在是绝对的。只需参考cv2.*
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))
    width  = vcap.get(cv2.CAP_PROP_FRAME_WIDTH)   
    height = vcap.get(cv2.CAP_PROP_FRAME_HEIGHT)