Я могу получить размер изображения, например:
import cv2
img = cv2.imread('my_image.jpg',0)
height, width = img.shape[:2]
Как насчет видео?
Я могу получить размер изображения, например:
import cv2
img = cv2.imread('my_image.jpg',0)
height, width = img.shape[:2]
Как насчет видео?
Это дает width
и height
файла или камеры как число с плавающей точкой (так что вам, возможно, придется преобразовать в целое число)
Но это всегда дает мне 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)
, но я проверил это только на одном файле.
ОБНОВЛЕНИЕ 2019: Текущий cv2 использует немного разные имена (но они имеют одинаковые номера: 3, 4, 5, 7)
import cv2
vcap = cv2.VideoCapture('video.avi') # 0=camera
if vcap.isOpened():
width = vcap.get(cv2.CAP_PROP_FRAME_WIDTH) # float
height = vcap.get(cv2.CAP_PROP_FRAME_HEIGHT) # float
print('width, height:', width, height)
#print(cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT) # 3, 4
fps = vcap.get(cv2.CAP_PROP_FPS)
print('fps:', fps) # float
#print(cv2.CAP_PROP_FPS) # 5
fps = vcap.get(cv2.CAP_PROP_FRAME_COUNT)
print('frames count:', fps) # float
#print(cv2.CAP_PROP_FRAME_COUNT) # 7
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))
Вы можете использовать метод vcap.get(i), где я могу быть между 0 и 21, в соответствии с документами OpenCV.