opencv `cv2` Python模块中缺少CAP_PROP_FRAME_COUNT常量

14 投票
5 回答
52376 浏览
提问于 2025-04-29 14:11

如何在Python中访问OpenCV的CAP_PROP_FRAME_COUNT?我试过这样:

import cv2
cap = cv2.VideoCapture('myvideo.avi')
frames_count, fps, width, height = cap.get(cv2.CAP_PROP_FRAME_COUNT), cap.get(cv2.CAP_PROP_FPS), cap.get(cv2.CAP_PROP_FRAME_WIDTH), cap.get(cv2.CAP_PROP_FRAME_HEIGHT)

还有这样:

import cv2
import cv
cap = cv2.VideoCapture('myvideo.avi')
frames_count, fps, width, height = cap.get(cv.CAP_PROP_FRAME_COUNT), cap.get(cv.CAP_PROP_FPS), cap.get(cv.CAP_PROP_FRAME_WIDTH), cap.get(cv.CAP_PROP_FRAME_HEIGHT)

还有这个:

import cv2
cap = cv2.VideoCapture('myvideo.avi')
frames_count, fps, width, height = cap.get(cv2.cv.CAP_PROP_FRAME_COUNT), cap.get(cv2.cv.CAP_PROP_FPS), cap.get(cv2.cv.CAP_PROP_FRAME_WIDTH), cap.get(cv2.cv.CAP_PROP_FRAME_HEIGHT)

但是我遇到了这个错误:

AttributeError: 'module' object has no attribute 'CAP_PROP_FRAME_COUNT'

我使用的是Python 2.7.5OpenCV 2.4.9

暂无标签

5 个回答

-1
import cv2

import cv2.cv as cv
stream = cv2.VideoCapture(filename)

print stream.get(cv.CV_CAP_PROP_FRAME_COUNT)

使用 cv2:

2

这是关于如何使用OpenCV库来读取和写入图像和视频的文档链接。你可以在这里找到相关的技术细节和示例。

#3. CV_CAP_PROP_FRAME_WIDTH
print "\t CAP_PROP_FRAME_WIDTH:     ",cap.get(3)
#4. CV_CAP_PROP_FRAME_HEIGHT
print "\t CAP_PROP_FRAME_HEIGHT:    ",cap.get(4)

这个链接提供了关于如何设置视频捕捉参数的说明。简单来说,就是教你如何调整摄像头或视频文件的设置,以便更好地获取你想要的视频效果。

#3. CV_CAP_PROP_FRAME_WIDTH
cap.set(3,320)
#4. CV_CAP_PROP_FRAME_HEIGHT
cap.set(4,240)
5

在OpenCV 2.x版本中,这些属性的名字都是以CV_...开头,比如CV_CAP_PROP_FRAME_COUNT

而在OpenCV 3.x和OpenCV 4.x版本中,这些属性的名字就没有CV_...了,比如变成了CAP_PROP_FRAME_COUNT

17

在OSX上使用macports的时候(opencv @3.0.0_1+python27+tbb),你可以通过下面的方式获取到CAP_PROP_FRAME_HEIGHT和CAP_PROP_FRAME_WIDTH:

#!/opt/local/bin/python
import cv2 
vcap = cv2.VideoCapture()
# set frame width and height
vcap.set(cv2.CAP_PROP_FRAME_WIDTH, 480)
vcap.set(cv2.CAP_PROP_FRAME_HEIGHT, 640)
vcap.open(0)
20

在OpenCV的第一个版本的Python模块中,常量的前面都有一个CV_的前缀。所以你可以用cv.CV_CAP_PROP_FRAME_COUNT或者cv2.cv.CV_CAP_PROP_FRAME_COUNT来表示。

撰写回答