C#+OpenCV进阶(三)_操作摄像头与视频文件
1.C#+OpenCV学习笔记(目录)-目录2.C#+OpenCV基础(一)_加载创建复制保存图片3.C#+OpenCV基础(二)_灰度化二值化4.C#+OpenCV基础(三)_修改高宽剪切拼接缩放5.C#+OpenCV基础(四)_旋转翻转透视6.C#+OpenCV基础(五)_添加边框7.C#+OpenCV基础(六)_均值中值高斯双边滤波8.C#+OpenCV基础(七)_图像金字塔9.C#+OpenCV基础(八)_获取修改图片亮度10.C#+OpenCV基础(九)_拆分合并图层11.C#+OpenCV基础(十)_灰度变化与直方图12.C#+OpenCV基础(十一)_图片基础计算13.C#+OpenCV基础(十二)_图片形态学计算14.C#+OpenCV基础(十三)_图片白平衡矫正15.C#+OpenCV基础(十四)_绘制像素、图形、文字16.C#+OpenCV基础(十五)_图像的基础分割方法17.C#+OpenCV基础(十六)_识别圆、直线、斑点、轮廓18.C#+OpenCV基础(十七)_计算图片相似度19.C#+OpenCV基础(十八)_模版匹配20.C#+OpenCV进阶(一)_人体识别21.C#+OpenCV进阶(二)_文字识别
22.C#+OpenCV进阶(三)_操作摄像头与视频文件
23.C#+OpenCV进阶(四)_录屏24.C#+OpenCV实战(一)_图片简易角度矫正25.C#+OpenCV实战(二)_春天转秋天26.C#+OpenCV实战(三)_玉米粒计数27.C#+OpenCV实战(四)_特定钢板缺陷检测1、VideoCapture的常用属性
#region 常用属性
//_ = videoCapture.CaptureType; // 获取视频的捕获类型(文件或摄像头)
//_ = videoCapture.PosAviRatio; // 获取或设置视频的相对位置(0开头1结尾)
//_ = videoCapture.FourCC; // 获取或设置视频的编解码的4字符代码
//_ = videoCapture.Format; // 获取或设置图像的对象格式
//_ = videoCapture.Format; // 获取或设置后端特定的值(当前捕获模式)
//_ = videoCapture.ConvertRgb; // 是否转化为Rgb图片
//_ = videoCapture.FrameWidth; // 获取或设置视频的宽度
//_ = videoCapture.FrameHeight; // 获取或设置视频的宽度
//_ = videoCapture.FrameCount; // 获取或设置视频的帧数
//_ = videoCapture.Fps; // 获取或设置视频的帧速率
//_ = videoCapture.PosMsec; // 获取视频的当前帧位置
//_ = videoCapture.PosFrames; // 获取或设置视频的下一帧位置
//_ = videoCapture.Brightness; // 获取或设置图像的亮度(仅用于相机)
//_ = videoCapture.Contrast; // 获取或设置图像的对比度(仅用于相机)
//_ = videoCapture.Saturation; // 获取或设置图像的饱和度(仅用于相机)
//_ = videoCapture.Hue; // 获取或设置图像的色调图像(仅用于相机)
//_ = videoCapture.Gain; // 获取或设置图像的图像增益(仅用于相机)
//_ = videoCapture.Exposure; // 获取或设置图像的曝光(仅用于相机)
#endregion 常用属性
2、操作视频文件
/// <summary>
/// 打开视频 By 文件
/// </summary>
/// <param name="fileName">视频文件地址</param>
/// <param name="apiPreference">打开的方式类型</param>
/// <returns></returns>
public static VideoCapture Open_FromFile(string fileName, VideoCaptureAPIs apiPreference = VideoCaptureAPIs.ANY)
{
// 写法一:
//VideoCapture capture = new VideoCapture();
//capture.Open(fileName, apiPreference);
// 写法二:
VideoCapture capture = new VideoCapture(fileName, apiPreference);
return capture;
}
/// <summary>
/// 关闭视频/摄像头
/// </summary>
/// <param name="videoCapture"></param>
public static void Release(VideoCapture videoCapture) => videoCapture?.Release();
/// <summary>
/// 是否成功打开
/// </summary>
/// <param name="videoCapture">视频对象</param>
public static bool IsOpened(VideoCapture videoCapture) => videoCapture.IsOpened();
/// <summary>
/// 读取视频/摄像头中的当前帧 -RetrieveMat
/// </summary>
/// <param name="videoCapture">video对象</param>
public static Mat RetrieveMat(VideoCapture videoCapture)
{
return videoCapture.RetrieveMat();
}
/// <summary>
/// 读取视频/摄像头中的当前帧 -Retrieve
/// </summary>
/// <param name="videoCapture">video对象</param>
/// <param name="mat">图像信息</param>
/// <param name="flag">它可以是帧索引或特定于驱动程序的标志</param>
/// <returns></returns>
public static bool Retrieve(VideoCapture videoCapture, out Mat mat, int flag = 0)
{
mat = new Mat();
return videoCapture.Retrieve(mat, flag);
}
/// <summary>
/// 读取视频/摄像头中的当前帧 -Read
/// </summary>
/// <param name="videoCapture">video对象</param>
/// <param name="mat">图像信息</param>
/// <returns></returns>
public static bool Read(VideoCapture videoCapture, out Mat mat)
{
mat = new Mat();
return videoCapture.Read(mat);
}
3、操作摄像头
/// <summary>
/// 打开视频 By 摄像头
/// </summary>
/// <param name="index">摄像头编号,0代表默认摄像头</param>
/// <param name="apiPreference">打开的方式类型</param>
/// <returns></returns>
public static VideoCapture Open_FromCamera(int index, VideoCaptureAPIs apiPreference = VideoCaptureAPIs.ANY)
{
// 写法一:
//VideoCapture capture = new VideoCapture();
//capture.Open(index, apiPreference);
// 写法二:
VideoCapture capture = new VideoCapture(index, apiPreference);
return capture;
}
/// <summary>
/// 关闭视频/摄像头
/// </summary>
/// <param name="videoCapture"></param>
public static void Release(VideoCapture videoCapture) => videoCapture?.Release();
/// <summary>
/// 是否成功打开
/// </summary>
/// <param name="videoCapture">视频对象</param>
public static bool IsOpened(VideoCapture videoCapture) => videoCapture.IsOpened();
/// <summary>
/// 读取视频/摄像头中的当前帧 -RetrieveMat
/// </summary>
/// <param name="videoCapture">video对象</param>
public static Mat RetrieveMat(VideoCapture videoCapture)
{
return videoCapture.RetrieveMat();
}
/// <summary>
/// 读取视频/摄像头中的当前帧 -Retrieve
/// </summary>
/// <param name="videoCapture">video对象</param>
/// <param name="mat">图像信息</param>
/// <param name="flag">它可以是帧索引或特定于驱动程序的标志</param>
/// <returns></returns>
public static bool Retrieve(VideoCapture videoCapture, out Mat mat, int flag = 0)
{
mat = new Mat();
return videoCapture.Retrieve(mat, flag);
}
/// <summary>
/// 读取视频/摄像头中的当前帧 -Read
/// </summary>
/// <param name="videoCapture">video对象</param>
/// <param name="mat">图像信息</param>
/// <returns></returns>
public static bool Read(VideoCapture videoCapture, out Mat mat)
{
mat = new Mat();
return videoCapture.Read(mat);
}
4、保存录像
/// <summary>
/// 保存视频 -初始化
/// </summary>
/// <param name="fileName">视频名称</param>
/// <param name="apiPreference">允许指定要使用的API后端。可用于强制执行特定读取器</param>
/// <param name="fourcc">用于压缩帧的编解码器的4个字符代码;默认是PIM1,也可以是MJPG、H264、H265</param>
/// <param name="fps">视频流的帧速率</param>
/// <param name="frameSize">视频流的宽高</param>
/// <param name="isColor">是否是彩色</param>
/// <returns></returns>
public static VideoWriter VideoWriter_Init(string fileName, VideoCaptureAPIs apiPreference, FourCC fourcc, double fps, Size frameSize, bool isColor = true)
{
VideoWriter videoWriter = new VideoWriter(fileName, apiPreference, fourcc, fps, frameSize, isColor);
return videoWriter;
}
/// <summary>
/// 保存视频 - 添加帧
/// </summary>
/// <param name="videoCapture">VideoWriter对象</param>
/// <param name="mat">图像信息</param>
/// <returns></returns>
public static void VideoWriter_Write(VideoWriter videoWriter, Mat mat) => videoWriter.Write(mat);
/// <summary>
/// 保存视频 - 保存完成(结尾执行或分段执行)
/// </summary>
/// <param name="videoCapture">VideoWriter对象</param>
/// <param name="mat">图像信息</param>
/// <returns></returns>
public static void VideoWriter_Release(VideoWriter videoWriter) => videoWriter?.Release();
本文来自博客园,作者:꧁执笔小白꧂,转载请注明原文链接:https://www.cnblogs.com/qq2806933146xiaobai/p/18295792
合集:
C#+机器视觉OpenCV
分类:
C#+机器视觉OpenCV
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
2023-07-11 Element-动态控制el-table的行的显示与隐藏
2019-07-11 javascript修改css样式表