在 OpenCV 中播放视频

2024-01-04

我是 OpenCV 的初学者,我希望在 OpenCV 中播放视频。我已经编写了一个代码,但它只显示单个图像。 我正在使用 OpenCV 2.1 和 Visual Studio 2008。 如果有人指导我哪里出错了,我将非常感激。 这是我粘贴的代码:

#include "stdafx.h"
#include "cv.h"
#include "highgui.h"

int main()
{
CvCapture* capture = cvCaptureFromAVI("C:/OpenCV2.1/samples/c/tree.avi");
IplImage* img = 0; 
if(!cvGrabFrame(capture)){              // capture a frame 
printf("Could not grab a frame\n\7");
exit(0);}
cvQueryFrame(capture); // this call is necessary to get correct 
                   // capture properties
int frameH    = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT);
int frameW    = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH);
int fps       = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);
int numFrames = (int) cvGetCaptureProperty(capture,  CV_CAP_PROP_FRAME_COUNT);
///numFrames=total number of frames



printf("Number of rows %d\n",frameH);
printf("Number of columns %d\n",frameW,"\n");
printf("frames per second %d\n",fps,"\n");
printf("Number of frames %d\n",numFrames,"\n");

for(int i=0;i<numFrames;i++)
{
IplImage* img = 0;
img=cvRetrieveFrame(capture); 
cvNamedWindow( "img" );
cvShowImage("img", img);

}
cvWaitKey(0);
cvDestroyWindow( "img" );
cvReleaseImage( &img );
cvReleaseCapture(&capture);


return 0;
}

你必须使用cvQueryFrame代替cvRetrieveFrame。另外正如@Chipmunk 所指出的,你必须在之后添加延迟cvShowImage.

#include "stdafx.h" 
#include "cv.h"       
#include "highgui.h"
cvNamedWindow( "img" );
for(int i=0;i<numFrames;i++)
{
   IplImage* img = cvQueryFrame(capture); 
   cvShowImage("img", img);
   cvWaitKey(10);
}

以下是使用 OpenCV 播放视频的完整方法:

int main()
{
    CvCapture* capture = cvCreateFileCapture("C:/OpenCV2.1/samples/c/tree.avi");

    IplImage* frame = NULL;

    if(!capture)
    {
        printf("Video Not Opened\n");
        return -1;
    }

    int width = (int)cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_WIDTH);
    int height = (int)cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_HEIGHT);
    double fps = cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);
    int frame_count = (int)cvGetCaptureProperty(capture,  CV_CAP_PROP_FRAME_COUNT);

    printf("Video Size = %d x %d\n",width,height);
    printf("FPS = %f\nTotal Frames = %d\n",fps,frame_count);

    while(1)
    {
        frame = cvQueryFrame(capture);

        if(!frame)
        {
            printf("Capture Finished\n");
            break;
        }

        cvShowImage("video",frame);
        cvWaitKey(10);
    }

    cvReleaseCapture(&capture);
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 OpenCV 中播放视频 的相关文章

  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置

随机推荐

  • Android 导航组件 + 登录流程 + 嵌套 BottomNavigationView

    我正在努力使用 Android 导航组件构建导航 如下图所示 我需要一个 登录流程 检查用户是否已登录 然后导航到应用程序的主要部分 还清除后退堆栈 主要部分包含一个带有三个选项卡的 BottomNavigationView 但是 如果我单
  • 在 C 中循环固定大小的数组而不定义其大小

    一些开始问题的示例代码 define FOO COUNT 5 static const char foo 123 456 789 987 654 例如 通常迭代的方式如下 int i FOO COUNT while i gt 0 print
  • Winform .NET 增强树视图?

    与 vs net 2008 附带的标准 TreeView 相比 有哪些附加功能的优秀 TreeView 替代品是什么 请包括免费和商业选项 树状视图高级 https sourceforge net projects treeviewadv
  • 限制 GridView C# UWP 中的项目数量

    我使用绑定到集合的网格视图 该集合包含未知数量的项目 我想限制 GridView 在一行中仅显示 5 个项目 每个项目都保存在一个堆栈面板内 其中包含一个文本块和一个图像 A 如何限制 GridView 的项目数量 B 如果我不想限制它 我
  • 当操作系统无法分配内存时,使用 STL 的应用程序是否应该容易出现内存泄漏?

    我个人不喜欢异常处理 正如许多地方建议的那样不建议将捕获异常并继续执行程序作为良好的编程实践 然而 自从STL容器抛出异常 即 bad alloc 除了在我们的代码中使用异常处理块之外别无选择 但是 在处理应用程序中的 STL 调用时 我发
  • C# 中对象数组的排序(相当于 std::sort)

    如何在 C 中对字符串数组进行升序排序 我想在 C 中使用类似 std sort 的东西 std sort population begin population end 我需要对对象列表进行排序 列表中的对象是 Genome 类的实例 我
  • 32 位有符号二进制字符串的 Java Integer.parseInt() 抛出 NumberFormatException

    这是Java Api的bug吗 int i 0xD3951892 System out println i 745203566 String binString Integer toBinaryString i int radix 2 in
  • C# Math.Round Up

    我有一个问题 我有一个小数 我想将其四舍五入到小数点后两位 不是以普通方式 而是 0 2013559322033898305084745763 期望结果 0 21 我怎样才能做到这一点 不能直接使用 所以你必须使用一个技巧 Math Cei
  • Symfony2/Doctrine 如何存储实体内相关对象的数量

    我已经设置了一个包 其中包含一个测试对象 该对象包含多个 testQuestion 对象 每个对象都是一个问题和给定的答案 如果没有答案则为 0 我希望能够从 twig 中获取测试对象的信息 以说明有多少问题以及已回答了多少问题 我创建了一
  • 可视化设计数据库结构

    我很高兴在创建数据库时手动编写表格 但这并不是向其他人传达有关数据库的信息的最简单方法 尤其是那些不喜欢通过脚本编写表格的人 而是会使用 phpMyAdmin 之类的东西 有没有一个免费的程序 对我来说 它必须在 Mac 上运行 但请随意为
  • Django Celery:仅执行长时间运行的进程的一个实例

    我有一个长时间运行的进程 必须每五分钟运行一次 但进程的多个实例不应同时运行 该过程通常不应运行超过五分钟 但我想确保第二个实例如果运行超过则不会启动 Per a 之前的推荐 https stackoverflow com question
  • UICollectionView 数据源方法没有被调用,但在 init 中设置

    这是我的源代码 id initWithCollectionView UICollectionView collectionView self super init if self self collectionView collection
  • Keras 导入错误 Tensorflow 后端

    ImportError Traceback most recent call last Users CJL anaconda3 lib python3 5 site packages keras backend tensorflow bac
  • 如何使用 swift 对搜索正则表达式进行分组

    在正则表达式中 您可以对不同的匹配进行分组 以轻松地 模式匹配 给定的匹配 while match nil match source rangeOfString regex options RegularExpressionSearch i
  • 启用 Apache http 授权标头

    我写一个API with PHP ZF2他们使用HTTP授权 我获取所有HTTP标头带有apache request headers 也用 ZF2 进行了测试 this gt getRequest gt getHeaders 它适用于我的语
  • 聚合和运算符的区别

    我一直在阅读一些 mongodb 文档 并遇到了一些令人困惑的术语 即如何区分符号何时用作聚合函数或运算符 例如 size函数要么计算数组中的项目数 要么检查数组中的元素数是否等于数字 有什么方法可以知道函数在什么时候会做什么 通过反复试验
  • javafx 2 文本字段中的提示文本在某些 java 7 更新后隐藏在焦​​点上

    我一直在制作简单的 javafx 2 gui 应用程序 发现一旦文本字段获得焦点 javafx 2 文本字段中的提示文本就会隐藏 这不是一些更新的方式 在此更新之前 文本字段会显示提示文本 直到输入一些文本为止 这不好 确实需要一个解决方法
  • 从文本区域输入捕获换行符

    我的 html 中有一个文本区域表单 如果用户在 2 个句子之间按下 Enter 键 则数据应该转移到我的 PHP 中 目前如果用户输入 Apple Google MS 我的 PHP 代码是 str POST field echo str
  • 将 neo4j 数据库从 2.0.1 升级到 2.1.3 失败

    我正在尝试将在 Windows 上运行的 Neo4j 商店从 2 0 1 升级到 2 1 3 我所做的 从工作 2 0 1 开始 环境 如下 2 0 1 bin neo4jinstall bat 删除 xcopy 2 0 1 data fi
  • 在 OpenCV 中播放视频

    我是 OpenCV 的初学者 我希望在 OpenCV 中播放视频 我已经编写了一个代码 但它只显示单个图像 我正在使用 OpenCV 2 1 和 Visual Studio 2008 如果有人指导我哪里出错了 我将非常感激 这是我粘贴的代码