当前位置: 首页 > news >正文

微网站中定位功能怎么做的怎么做网站免费的

微网站中定位功能怎么做的,怎么做网站免费的,wordpress下载单页,dnf做心悦宠物的网站目录 引言 一、视频读取技术 VideoCapture 类 构造函数 常用方法 二、视频写入技术 VideoWriter 类 构造函数 常用方法 三、视频录制技术 1. 包含OpenCV头文件 2. 初始化VideoCapture对象 3. 设置视频编码器 4. 读取和写入视频帧 5. 释放资源 6. 编码格式选择 …

目录

引言

一、视频读取技术

VideoCapture 类

构造函数

常用方法

二、视频写入技术

VideoWriter 类

构造函数

常用方法

三、视频录制技术

1. 包含OpenCV头文件

2. 初始化VideoCapture对象

3. 设置视频编码器

4. 读取和写入视频帧

5. 释放资源

6. 编码格式选择

 四、示例代码:读写视频文件

五、总结


引言

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,广泛应用于图像和视频处理、面部识别、物体检测等多个领域。本文将详细介绍OpenCV中的视频读写技术,包括VideoCapture 和 VideoWriter 类和相关函数,并通过代码示例展示如何读取和写入视频文件。

一、视频读取技术

VideoCapture 类

cv::VideoCapture 是OpenCV中用于处理视频输入的类,它可以从摄像头、视频文件或图像序列中读取帧。以下是该类的主要方法和用法。

构造函数
  • cv::VideoCapture::VideoCapture(const string& filename): 通过文件路径打开视频文件。
  • cv::VideoCapture::VideoCapture(int device): 通过设备ID打开摄像头,默认摄像头ID为0。
常用方法
  • bool isOpened() const: 检查视频是否成功打开。
  • bool read(OutputArray image): 读取视频中的一帧,并将其存储在Mat对象中。
  • void release(): 释放VideoCapture对象所占用的资源。
  • double get(int propId): 获取视频属性,如帧率、宽度、高度等。
  • bool set(int propId, double value): 设置视频属性,如帧率、宽度、高度等。


二、视频写入技术

VideoWriter 类

cv::VideoWriter 是OpenCV中用于将图像帧序列保存为视频文件的类。在创建视频文件时,需要指定文件名、编解码器、帧率、宽度和高度等参数。

构造函数
  • cv::VideoWriter::VideoWriter(const string& filename, int fourcc, double fps, Size frameSize, bool isColor=true):
    • filename: 视频文件的名称和路径。
    • fourcc: 编解码器,如 CV_FOURCC('M','J','P','G') 表示MJPG编解码器。
    • fps: 视频的帧率。
    • frameSize: 视频帧的大小。
    • isColor: 视频图像是否为彩色(默认为true)。
常用方法
  • bool isOpened() const: 检查VideoWriter对象是否成功打开。
  • void write(InputArray image): 将一帧图像写入视频文件。
  • void release(): 释放VideoWriter对象所占用的资源。

三、视频录制技术

1. 包含OpenCV头文件

在C++源文件的开头,需要包含OpenCV的相关头文件。

#include <opencv2/opencv.hpp>  
#include <iostream>

2. 初始化VideoCapture对象

使用cv::VideoCapture类可以捕获视频数据,包括来自摄像头的实时视频。

cv::VideoCapture cap(0); // 0为默认摄像头  
if (!cap.isOpened()) {  std::cerr << "无法打开摄像头" << std::endl;  return -1;  
}

3. 设置视频编码器

在录制视频之前,需要设置视频的编码格式、帧率、分辨率等参数。

int fourcc = cv::VideoWriter::fourcc('M', 'J', 'P', 'G'); // 选择MJPG编码  
double fps = 20.0; // 帧率  
cv::Size frameSize(640, 480); // 分辨率  
cv::VideoWriter videoWriter("output.avi", fourcc, fps, frameSize, true); // 彩色模式  if (!videoWriter.isOpened()) {  std::cerr << "无法打开视频写入器" << std::endl;  return -1;  
}

4. 读取和写入视频帧

通过循环读取摄像头捕获的帧,并将它们写入到视频文件中。

cv::Mat frame;  
while (true) {  bool ret = cap.read(frame);  if (!ret) {  std::cerr << "无法读取视频帧" << std::endl;  break;  }  // 可以在这里对frame进行处理,如色彩转换、添加水印等  videoWriter.write(frame); // 写入帧到视频文件  // 显示帧(可选)  cv::imshow("Video Capture", frame);  // 按'q'键退出循环  if (cv::waitKey(1) == ord('q')) {  break;  }  
}

5. 释放资源

完成视频录制后,需要释放VideoCapture和VideoWriter对象占用的资源。

cap.release();  
videoWriter.release();  
cv::destroyAllWindows();

6. 编码格式选择

OpenCV支持多种视频编码格式,如MJPG、XVID、DIVX、X264等。不同的编码格式在文件体积、压缩效率和兼容性方面有所不同。例如,MJPG适合高尺寸视频,XVID是MPEG-4编码,文件体积较小,X264可以得到更小的文件体积但可能兼容性稍差。

 四、示例代码:读写视频文件

#include <iostream>
#include <opencv2/opencv.hpp>using namespace std;
using namespace cv;int main(int argc, char* argv[])
{// 读取原视频文件VideoCapture vcap("video.mp4");// 读取视频的帧的宽度和高度 \ 帧int fvwidth = vcap.get(CAP_PROP_FRAME_WIDTH);int fvheight = vcap.get(CAP_PROP_FRAME_HEIGHT);double fvfps = vcap.get(CAP_PROP_FPS);// 通过cout输出获取参数值cout << "宽度:" << fvwidth << endl;cout << "高度:" << fvheight << endl;cout << "帧:" << fvfps << endl;// 录制MP4视频VideoWriter vw("writermp4.mp4", vcap.get(CAP_PROP_FOURCC), fvfps, Size(fvwidth, fvheight));Mat fm;while (1){vcap.read(fm);if (fm.empty()){break;}vw.write(fm);imshow("测试:录制视频中", fm);int key = waitKey(1);if (key == 27){break;}}vcap.release();vw.release();waitKey(0);return 0;
}

五、总结

通过本文,我们了解了OpenCV 的 VideoCapture 和 VideoWriter 类为视频读写提供了强大而灵活的功能和如何在C++中使用OpenCV库进行视频录制。这包括初始化VideoCapture对象、设置视频编码器、读取和写入视频帧以及释放资源等关键步骤。掌握这些技术后,你可以轻松地将摄像头捕获的视频数据保存为文件,并进行进一步的处理和分析。希望这篇文章对你有所帮助!

http://www.ho-use.cn/article/2967.html

相关文章:

  • 浙江高端网站建设公司免费seo在线优化
  • 幼儿园劳动节主题网络图设计珠海百度推广优化排名
  • 品牌策划的意义苏州seo免费咨询
  • 只使用html做简单网站专业培训大全
  • 一个网站怎么做后台关键词分类
  • 手机网站建设可信赖seo怎么搞
  • 网站排名软件推荐环球军事网最新消息
  • 建设工程竣工验收消防备案网站电商seo是指
  • 招商网站平台南宁百度推广排名优化
  • 小程序网站开发公司台州seo排名外包
  • 50m专线做视频网站网站推广的一般流程是
  • 电白网站开发公司全国疫情的最新数据
  • 佛山做网站的哪个好西安百度公司
  • wordpress侧边栏提示seo百度排名优化
  • 在线做原型的网站长沙专业做网站公司
  • 做电商在什么网站郑州整站网站优化
  • 装饰设计效果图关键词优化按天计费
  • 如何选择常州网站建设软文推广是什么意思?
  • dedecms网站版权信息seo公司推广
  • 网站如何做会员通用西安seo网站关键词优化
  • wordpress页面可视编辑重庆seo网站推广费用
  • 做兼职什么网站靠谱seo的宗旨是什么
  • 网站推广流程广州各区风险区域最新动态
  • 怎样给网站做 站内搜索网络销售挣钱吗
  • 网站公安备案增加开办主体网站建设深圳公司
  • 有什么网站可以赚钱电话营销话术
  • 可以自己制作广告的软件海外seo培训
  • 论文检索网站怎么做青岛官网优化
  • 长沙市规划建设局网站一站式媒体发布平台
  • 一个空间怎么做两个网站 跳转app拉新怎么做