首页 > 其他分享 >【OpenCV】快速入门(二)--视频处理(1)

【OpenCV】快速入门(二)--视频处理(1)

时间:2024-09-02 18:24:35浏览次数:11  
标签:视频 入门 -- frame cap argv OpenCV open cv

OpenCV–视频处理

先看代码

#include <iostream>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
int main(int argc,char** argv) {
    cv::namedWindow("Example3",cv::WINDOW_AUTOSIZE);
    cv::VideoCapture cap;
    cap.open(std::string(argv[1]));
//    cap.open("../test.mp4");
    cv::Mat frame;
    for (;;) {
        cap >> frame;
        if (frame.empty())
            break;
        cv::imshow("Example3",frame);
        if (cv::waitKey(33) >= 0) break;
    }
    return 0;
}

在终端中输入

cd name.exe文件所在目录
./name.exe 要打开的视频路径

或者把cap.open(std::string(argv[1]));这一句换成cap.open("视频路径");然后点击运行,相对路径的话是相对.exe文件或所编写代码文件

现象

打开你所输入的路径的视频

代码讲解

#include <iostream>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"

包含必要的头文件

int main(int argc,char** argv) {

argc 和 argv,它们通常用于命令行参数,如在终端输入的第二行,只有一个参数 要打开的视频路径,那么argc就为1,argv为你输入的参数,在程序中可以调用

    cv::namedWindow("Example3",cv::WINDOW_AUTOSIZE);
    cv::VideoCapture cap;
    cap.open(std::string(argv[1]));
//    cap.open("../test.mp4");
    cv::Mat frame;

创建一个窗口,一个视频数据并接收要传入的视频,一个图像帧来接收视频的每帧的图像

    for (;;) {
        cap >> frame;
        if (frame.empty())
            break;
        cv::imshow("Example3",frame);
        if (cv::waitKey(33) >= 0) break;
    }

“>>” 表示将cap的数据写入到frame中,每经过下一次循环cap会跳转到下一帧,若为空则表示视频结束,否则延时33ms播放下一个画面

延时过程中若有按键输入,则直接退出

标签:视频,入门,--,frame,cap,argv,OpenCV,open,cv
From: https://blog.csdn.net/f272935657/article/details/141826506

相关文章

  • 多线程的使用-->3
    1.死锁在线程同步过程中,因为多线程争抢锁资源,所以有些线程会执行,有些线程会等待。如果线程A和线程B分别需要X和Y两个锁资源恰好A获得了X资源,准备争抢Y,而B获得了Y资源,准备争抢X,此时A和B就进入了一中死锁状态。如何解决死锁问题?①从业务逻辑层面解决让它们随机抢资源......
  • 盲盒小程序开发,探索市场发展优势
    随着潮玩市场的火热,盲盒已经成为了一种集娱乐、社交、消费为一体的模式,越来越多的消费者被盲盒所吸引,盲盒市场也迎来了巨大的发展空间,带来了各种商业机遇,同时为创业者提供新的创业渠道。本文将探讨盲盒小程序的开发带来的发展优势。盲盒小程序是一个线上购物模式,传统的盲盒具有价格......
  • Java开发语言:ssm人力资源管理系统010(附免费源码)
    摘 要科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设人......
  • 在Python中如何执行语句?
    Python是一种高级编程语言,具有简洁、易读的语法结构,广泛应用于数据分析、机器学习、web开发、人工智能、游戏开发等领域。而在Python中,语句是构建程序的基本单元,通过语句来实现具体的功能操作,那么Python如何执行语句?具体请看下文。Python使用以下方法来执行语句:1、解......
  • for和do-while循环以及break和continue语句
    目录for循环语法形式循环的执行流程图for循环和while循环的区别例子do-while循环语法形式循环的执行流程图例子break和continue语句break和continue在不同循环中的区别whilefordo-whilefor循环语法形式for循环是三种循环中使用最多的,for循环的语法形式如下:f......
  • 学习Python多久才能入门?
    转行学习编程,Python语言是大多数人的首要选择。因为它不仅在web开发、游戏开发、数据分析、网络爬虫等领域有着优异的表现,更是人工智能和机器学习的首选语言,那么学会Python大概需要多久?我们一起来看看吧。学习Python所需的时间取决个人的学习速度、学习目标和学习方式。......
  • 微型直线导轨高精度运行的工作原理
    微型导轨是一种用于高精度定位和运动控制的传动装置,常用于微小化、高精密度化的机械设备中,如IC制造设备、半导体设备、高速移载的设备、精密测量、检测仪器、医疗设备、X-Ytable,以及高速皮带驱动的设备等小型化设备。微型导轨的构成相对复杂且精密,主要由导轨体、滑块、滚动体、返......
  • 【Java】—— Java面向对象进阶:Java中的账户管理-基础账户与可透支账户的实现与测试
    目录1.基础账户类(Account)2.测试基础账户类3.可透支账户类(CheckAccount)4.测试可透支账户类运行结果1.基础账户类(Account)        写一个名为Account的类模拟账户。该类的属性和方法如下图所示。该类包括的属性:账号id,余额balance,年利率annualInterestRate;......
  • 开机就能打?没那么玄乎!客观分析 “狂躁许可”漏洞(CVE-2024-38077)及其影响范围
    一、事件背景2024年7月9日,微软官方发布了一个针对“windows远程桌面授权服务远程代码执行漏洞”(CVE-2024-38077)的修复补丁包,起初并没有引起大家的警觉。今日在国外某网站上疑似漏洞的作者公开了该漏洞的“POC验证代码”。一时激起千层浪,该漏洞开始疯狂发酵并在安全圈里转发。该文章......
  • 中国机器人大赛机器人旅游-机器人探险软件经验分享
    1比赛规则书一旦中国机器人大赛规则书发布,一定要读3遍及以上,并与前一年规则书进行对比。举个例子,2023年规则书与2022年规则书并无区别,原因可能是因为2022年比赛是线上赛。但2024年规则书相比2023年增加了重量要求,并且七、八号平台没有黄线。总决赛相比专项赛颜色识别牌的颜色......