热门标签 | 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)

推荐阅读
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 题目Link题目学习link1题目学习link2题目学习link3%%%受益匪浅!-----&# ... [详细]
  • 使用GDI的一些AIP函数我们可以轻易的绘制出简 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • 题目描述:给定n个半开区间[a, b),要求使用两个互不重叠的记录器,求最多可以记录多少个区间。解决方案采用贪心算法,通过排序和遍历实现最优解。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 如何在PHPCMS V9中实现多站点功能并配置独立域名与动态URL
    本文介绍如何在PHPCMS V9中创建和管理多个站点,包括配置独立域名、设置动态URL,并确保各子站能够正常运行。我们将详细讲解从新建站点到最终配置路由的每一步骤。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 本文探讨了如何在编程中正确处理包含空数组的 JSON 对象,提供了详细的代码示例和解决方案。 ... [详细]
  • 本文介绍了Linux系统中的文件IO操作,包括文件描述符、基本文件操作函数以及目录操作。详细解释了各个函数的参数和返回值,并提供了代码示例。 ... [详细]
  • 本文详细介绍了如何规划和部署一个高可用的Etcd集群,包括主机配置、软件安装、防火墙设置及集群健康检查等内容。通过合理的硬件配置和网络规划,确保Etcd集群在生产环境中的稳定运行。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
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社区 版权所有