Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.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 - Fatal编程技术网

使用python和opencv获取电影属性

使用python和opencv获取电影属性,python,opencv,Python,Opencv,我正在使用OpenCV对我在实验中制作的电影进行一些计算。要做到这一点,我需要电影中的一些属性,如果我能自动从电影本身中检测到它们,那就很方便了。在中,我找到以下代码: cv2.VideoCapture.get(propId) → retval 在下面的列表中,它指出对于总帧数,propId应为CV\u CAP\u PROP\u FRAME\u WIDTH。但是,当我尝试以下操作时,会出现错误: >> cap = cv2.VideoCapture('runoff.MOV') >

我正在使用OpenCV对我在实验中制作的电影进行一些计算。要做到这一点,我需要电影中的一些属性,如果我能自动从电影本身中检测到它们,那就很方便了。在中,我找到以下代码:

cv2.VideoCapture.get(propId) → retval
在下面的列表中,它指出对于总帧数,
propId
应为
CV\u CAP\u PROP\u FRAME\u WIDTH
。但是,当我尝试以下操作时,会出现错误:

>> cap = cv2.VideoCapture('runoff.MOV')
>> print cap.get('CV_CAP_PROP_FRAME_WIDTH')
TypeError: an integer is required
如果我在代码中输入一个整数:

>> cap = cv2.VideoCapture('runoff.MOV')
>> print cap.get(3)
1920.0

CV\u CAP\u PROP\u FRAME\u WIDTH
是文档列表中的第四项,事实上,当我使用正确的整数计数器
3
时,我得到了这个属性。我想知道是否有更简洁的方法来做到这一点,利用类本身并为它编写一个包含所有键和整数组合的字典。

您可以这样做:

cap.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)

可以从
cv2.CV
模块访问
CV\u CAP\u PROP.*
常量:

cap.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT)
不幸的是,并不是所有有用的东西都是从
cv2
cv
移植过来的,所以如果你在
cv2
中找不到你想要的东西,通常最好是查看
cv2.cv
。 例如,一些常量,如
cv2.CV\u LOAD\u IMAGE.*
已被移动

更新:- 对于OpenCV 3.1,请使用:-

cap.get(cv2.CAP_PROP_FRAME_COUNT)
基本上,属性名称已被修改,并且不再需要开头的“CV”。
(答案部分中Blane的功劳)

我正在使用OpenCV 3.1,Hannes建议的上述方法对我不起作用。对于OpenCV 3.1,属性的方法调用和名称格式似乎已略有更新。例如,
cap.get(cv2.cv.cv\u cap\u PROP\u FRAME\u WIDTH)
使用OpenCV 3.1返回
AttributeError:'module'对象没有属性“cv”
。以下对代码的细微调整对我起到了作用:
cap.get(cv2.cap\u PROP\u FRAME\u WIDTH)

请注意,CV_u不再需要作为属性名称的前缀