OpenCV视频I/O(17)视频写入类VideoWriter之检查视频编写器是否已经成功初始化的函数isOpened()的使用

embedded/2024/10/22 16:44:57/
  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

如果视频编写器已经成功初始化,则返回 true。

isOpened()函数用于检查 VideoWriter 对象是否已经成功初始化并且准备好写入视频帧。这个函数是非成员函数 cv::VideoWriter::open() 的辅助函数,通常用于确认 VideoWriter 是否处于可以工作的状态。

函数原型

virtual bool cv::VideoWriter::isOpened	(		)	const

参数

该函数没有参数。

返回值

返回一个布尔值,指示 VideoWriter 对象是否已经成功初始化。如果返回 true,则表示对象已经准备好写入视频帧;如果返回 false,则表示对象尚未初始化或出现了错误。

代码示例


#include <fstream>
#include <iostream>
#include <opencv2/opencv.hpp>int main()
{// 设置视频的宽度和高度int frameWidth  = 640;int frameHeight = 480;// 设置视频编码器的 FourCC 代码// 使用 XVID 编码器作为替代方案int fourcc = cv::VideoWriter::fourcc( 'X', 'V', 'I', 'D' );// 创建 VideoWriter 对象cv::VideoWriter writer;// 初始化 VideoWriter 对象bool isOpened = writer.open( "output.avi", fourcc, 25, cv::Size( frameWidth, frameHeight ), true );if ( !isOpened ){std::cerr << "Failed to initialize the video writer." << std::endl;return -1;}// 使用 isOpened() 函数再次检查状态if ( !writer.isOpened() ){std::cerr << "The video writer is not opened despite successful initialization." << std::endl;return -1;}else{std::cout<<"The video writer is opened successfully"<<std::endl;}// 创建一个示例帧cv::Mat frame = cv::Mat::zeros( frameHeight, frameWidth, CV_8UC3 );// 写入一帧到视频文件writer.write( frame );// 检查视频文件是否存在std::ifstream file( "output.avi" );if ( file.good() ){std::cout << "Video file created successfully." << std::endl;}else{std::cerr << "Failed to create video file." << std::endl;}// 关闭文件流file.close();// 释放资源writer.release();return 0;
}

运行结果

The video writer is opened successfully
Video file created successfully.

http://www.ppmy.cn/embedded/127619.html

相关文章

pdf阅读器哪个好用?5个软件帮助你快速阅读pdf文件

pdf阅读器哪个好用&#xff1f;5个软件帮助你快速阅读pdf文件 如果你在寻找好用的 PDF 阅读器&#xff0c;有很多强大的软件可以帮助你轻松、高效地阅读和处理 PDF 文件。这些软件不仅可以简单地查看文件&#xff0c;还能提供标注、评论、注释和文档管理等额外功能。以下是5款…

【计算机网络】IPv4地址的表示方法

文章目录 概念表示方法网络部分和主机部分子网掩码特殊地址 概念 IPv4&#xff08;Internet Protocol version 4&#xff09;地址是用于标识网络设备的32位数字地址。 表示方法 IPv4地址通常以点分十进制的形式表示&#xff0c;由四个十进制数构成&#xff0c;每个数的取值范…

LangChain使用Prompt02

1.设置提示 from langchain.prompts import ChatPromptTemplate prompt_template ChatPromptTemplate.from_messages([("system", "你是一位专业的翻译&#xff0c;能够将{input_language}翻译成{output_language}&#xff0c;并且输出文本会根据用户要求的任…

JavaScript将array数据下载到Excel中

具体代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widt…

Python:方法的链式调用

相关阅读 Pythonhttps://blog.csdn.net/weixin_45791458/category_12403403.html?spm1001.2014.3001.5482 在Python编程中&#xff0c;方法的链式调用是一种简洁且优雅的编程风格&#xff0c;它允许你在一行代码中连续调用多个方法&#xff0c;这种编程模式在简化代码、提升可…

Android Compose 控件基本属性

本文的代码由上一篇文章的Demo进一步书写完成, 传送门:Android Compose的基本使用-CSDN博客 _____________________________________________________________________________ 以下代码分别列举了控件的: 内边距,外边距,内容居中,渐变自定义边框,宽度权重,string资源引用等…

解决方案:“<”not supported between instances instances of “int” and “str”

文章目录 一、现象二、解决方案 一、现象 # 按照2024年10月01日为界拆分数据集 train df[:2024-09-30].iloc[:, 0:1].values #训练集 test df[2024-10-01:].iloc[:, 0:1].values #测试集“<”not supported between instances instances of “int” and “str” 二…

Tiktok 网络稳定与 IP 类型的关系

大家好&#xff01;今天&#xff0c;我们要聊一个既实用又接地气的话题——静态IP和动态IP&#xff0c;哪个更适合你的Tiktok账号呢&#xff1f;别担心&#xff0c;我会用最简单的方式帮你理清思路&#xff0c;让你轻松做出选择。 首先&#xff0c;咱们得明白什么是静态IP和动…