在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)