热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用python和opencv获取电影属性-Gettingmoviepropertieswithpythonandopencv

ImusingOpenCVtodosomecalculationsonmoviesImadeinexperiments.TodothisIneedsomepro

I'm using OpenCV to do some calculations on movies I made in experiments. To do this I need some properties from the movies and it would be handy if I could automaticly detect them from the movie itself. In the documentation I find the following code:

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

cv2.VideoCapture.get(propId) → retval

In the list below it states that for the total number of frames propId should be CV_CAP_PROP_FRAME_WIDTH. However when I try the following I get an error:

在下面的列表中,它指出,对于总帧数,propId应为CV_CAP_PROP_FRAME_WIDTH。但是当我尝试以下操作时出现错误:

>> cap = cv2.VideoCapture('runoff.MOV')
>> print cap.get('CV_CAP_PROP_FRAME_WIDTH')
TypeError: an integer is required

If I input an integer in the code:

如果我在代码中输入一个整数:

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

CV_CAP_PROP_FRAME_WIDTH is the 4th item in the list in the documentation and indeed when I use the correct integer counter 3 I get this property. I wonder if there is a neater way to do this, making use of the class itself and writing a dictionary for it with all key, integer combinations.

CV_CAP_PROP_FRAME_WIDTH是文档列表中的第4项,实际上当我使用正确的整数计数器3时,我得到了这个属性。我想知道是否有更简洁的方法来实现这一点,利用类本身并使用所有键,整数组合为它编写字典。

3 个解决方案

#1


10  

The CV_CAP_PROP_* constants can be accessed from the cv2.cv module:

可以从cv2.cv模块访问CV_CAP_PROP_ *常量:

cap.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT)

Unfortunately, not all useful things have been ported from cv2 from cv so it is generally a good idea to look in cv2.cv if you can't find what you are looking for in cv2. Some constants, like cv2.CV_LOAD_IMAGE_* have been moved, for example.

不幸的是,并非所有有用的东西都是从cv从cv移植的,所以如果你在cv2中找不到你想要的东西,通常最好查看cv2.cv。例如,某些常量,例如cv2.CV_LOAD_IMAGE_ *已被移动。

UPDATE:- For OpenCV 3.1 use:-

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

cap.get(cv2.CAP_PROP_FRAME_COUNT)

Basically, the property name has been modified and the "CV_" in the beginning is no longer required. (Credits to Blane in the answers section)

基本上,属性名称已被修改,并且不再需要开头的“CV_”。 (答案部分给Blane的学分)

#2


3  

I am using OpenCV 3.1 and the above methods suggested by Hannes do not work for me. It seems that the method call and name formatting of properties have been slightly updated for OpenCV 3.1. For example, cap.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH) returns AttributeError: 'module' object has no attribute 'cv' with OpenCV 3.1. The following minor adjustment to the code worked for me: cap.get(cv2.CAP_PROP_FRAME_WIDTH)

我正在使用OpenCV 3.1,Hannes建议的上述方法对我不起作用。似乎OpenCV 3.1稍微更新了属性的方法调用和名称格式。例如,cap.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)返回AttributeError:'module'对象没有OpenCV 3.1的属性'cv'。以下对代码的微小调整对我有用:cap.get(cv2.CAP_PROP_FRAME_WIDTH)

Note that CV_ is no longer necessary as a prefix for the attribute name.

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

#3


0  

You can do it like this:

你可以这样做:

cap.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)

推荐阅读
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • This post discusses an issue encountered while using the @name annotation in documentation generation, specifically regarding nested class processing and unexpected output. ... [详细]
  • 探讨ChatGPT在法律和版权方面的潜在风险及影响,分析其作为内容创造工具的合法性和合规性。 ... [详细]
  • JSOI2010 蔬菜庆典:树结构中的无限大权值问题
    本文探讨了 JSOI2010 的蔬菜庆典问题,主要关注如何处理非根非叶子节点的无限大权值情况。通过分析根节点及其子树的特性,提出了有效的解决方案,并详细解释了算法的实现过程。 ... [详细]
  • 本文介绍如何在Spring Boot项目中集成Redis,并通过具体案例展示其配置和使用方法。包括添加依赖、配置连接信息、自定义序列化方式以及实现仓储接口。 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 本题来自WC2014,题目编号为BZOJ3435、洛谷P3920和UOJ55。该问题描述了一棵不断生长的带权树及其节点上小精灵之间的友谊关系,要求实时计算每次新增节点后树上所有可能的朋友对数。 ... [详细]
  • 本文探讨了如何通过预处理器开关选择不同的类实现,并解决在特定情况下遇到的链接器错误。 ... [详细]
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
  • 本题要求在一组数中反复取出两个数相加,并将结果放回数组中,最终求出最小的总加法代价。这是一个经典的哈夫曼编码问题,利用贪心算法可以有效地解决。 ... [详细]
  • This request pertains to exporting the hosted_zone_id attribute associated with the aws_rds_cluster resource in Terraform configurations. The absence of this attribute can lead to issues when integrating DNS records with Route 53. ... [详细]
  • Redux入门指南
    本文介绍Redux的基本概念和工作原理,帮助初学者理解如何使用Redux管理应用程序的状态。Redux是一个用于JavaScript应用的状态管理库,特别适用于React项目。 ... [详细]
  • 在 Android 开发中,通过 Intent 启动 Activity 或 Service 时,可以使用 putExtra 方法传递数据。接收方可以通过 getIntent().getExtras() 获取这些数据。本文将介绍如何使用 RoboGuice 框架简化这一过程,特别是 @InjectExtra 注解的使用。 ... [详细]
  • 探讨 HDU 1536 题目,即 S-Nim 游戏的博弈策略。通过 SG 函数分析游戏胜负的关键,并介绍如何编程实现解决方案。 ... [详细]
  • 深入解析Java多线程与并发库的应用:空中网实习生面试题详解
    本文详细探讨了Java多线程与并发库的高级应用,结合空中网在挑选实习生时的面试题目,深入分析了相关技术要点和实现细节。文章通过具体的代码示例展示了如何使用Semaphore和SynchronousQueue来管理线程同步和任务调度。 ... [详细]
author-avatar
宝丁2502907973
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有