[英]Get video dimension in python-opencv
我可以得到圖像的大小,如下所示:
import cv2
img = cv2.imread('my_image.jpg',0)
height, width = img.shape[:2]
視頻呢?
它以float
給出文件或相機的width
和height
(因此您可能必須轉換為integer
)
但它總是給我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 `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)
似乎它可以工作fps = vcap.get(7)
但我只檢查了一個文件。
編輯 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:如何獲取 OpenCV 的 USB 網絡攝像頭屬性 ID 中的所有屬性
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)
對於 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
和其他人。
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))
根據 OpenCV 文檔,您可以使用vcap.get(i)方法,其中i可以介於 0 和 21 之間。
對於 OpenCV versions = 4.xx
:
width = vcap.get(cv2.CAP_PROP_FRAME_WIDTH)
height = vcap.get(cv2.CAP_PROP_FRAME_HEIGHT)
盡管這里有已解決的答案,但在 2021 年,情況發生了一些變化。 (OpenCV 版本 = 4.5.2
)
import cv2
cap = cv2.VideoCapture('video.mp4') #0 for camera
if cap.isOpened():
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH) # float `width`
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT) # float `height`
fps = cap.get(cv2.CAP_PROP_FPS) # float `fps`
total_frames = cap.get(cv2.CAP_PROP_FRAME_COUNT) # float `total_frame_in_the_video` (should not be applicable for camera)
對於ret, frame = cv2.VideoCapture
使用frame.shape
來獲取寬度和高度。
height, width, channels = frame.shape
print(width)
您可以使用以下代碼通過 opencv 獲取視頻寬度和高度。
import cv2
vidcap = cv2.VideoCapture('video.mp4')
frameWidth = vidcap.get(cv2.CAP_PROP_FRAME_WIDTH)
frameHeight = vidcap.get(cv2.CAP_PROP_FRAME_HEIGHT)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.