Opencv学习笔记(3)——图像、视频与数据文件

1 HighGUI模块

HighGUI:OpenCv把用于操作系统、文件系统以及摄像机等硬件设备交互的函数纳入到HighGUI模块中。即图像的输入输出、视频的输入输出和图形界面相关功能。

2 图像的载入与保存

cv::imread()函数

cv::Mat cv::imread( const String& filename, int flags = IMREAD_COLOR );
功能:实现图像的加载。
参数:filename:图像地址。
flags:加载标志。
返回值:Mat矩阵。失败时为空。使用cv::Mat::empty()==true判断
标志	含义
cv::IMREAD_COLOR	总是读取三通道图像(默认值)
cv::IMREAD_GRAYSCALE	总是读取单通道图像
cv::IMREAD_ANYCOLOR	通道数由实际文件决定
cv::IMREAD_ANYDEPTH	允许加载超过8bit深度
cv::IMREAD_UNCHANGED	cv::IMREAD_ANYCOLOR cv::IMREAD_ANYDEPTH

cv::imwrite ()函数

bool imwrite( const String& filename, InputArray img,
           const std::vector<int>& params = std::vector<int>());
功能:实现图像的保存。
参数:filename:保存图像的地址。
img:待存储的输入图像。
params:特殊类型文件的写入操作时所需的数据和参数。
返回值:保存成功返回true,失败false。
标志	含义	取值范围	默认值
cv::IMWRITE_JPE_QUALITY	JPEG的质量	0-100	95
cv::IMWRITE_PNG_COMPRESSION	PNG压缩值	0-9	3
cv::IMWRITE_PXM_BINARY	对PPM,PGM或PBM文件是否使用而知格式	01	1

cv:: imencode ()函数

bool imencode( const String& ext, InputArray img,
                            CV_OUT std::vector<uchar>& buf,
                       const std::vector<int>& params = std::vector<int>());
功能:实现图像的压缩。
参数:ext:文件拓展名。
img:要被压缩的图像数据。
buf:表示用来存储编码压缩后的图像数据的字符数组。
params:特殊类型文件的写入操作时所需的数据和参数,与imwrite参数相同。

cv:: imdecode ()函数

Mat imdecode( InputArray buf, int flags, Mat* dst);
功能:实现文件的解码,将字节流数据解码成数组的图像形式。
参数:buf:待解码的字节流。
flags:与imwrite参数相同。
dst:目标图像。

codecs的注释
涉及到图像的读取保存,必要会依赖于那些用于处理图像文件的库,这些库通常叫做codecs库,即编码解码库。

3 视频的处理

3.1 使用cv::VideoCapture对象读取视频流
构造函数

    VideoCapture();
    
    // 用于本地文件中读取视频流
   VideoCapture(const String& filename, int apiPreference = CAP_ANY);
   
   // 摄像头中读取视频流
   VideoCapture(int index, int apiPreference = CAP_ANY);

最好且有必要使用isopened()函数检查视频流是否打开。

从视频流中读取图像
(1) 使用read()函数
(2) 使用重载运算符>>。
(3) 使用VideoCapture::grab()和videoCapture::retrieve()读取
其中grab()是把图像抓取到内存中,二retrieve()则是从内存中解码图像。

相机的属性
视频文件不仅包含一帧一帧的图像,同时还包含许多重要的元数据,此类数据可以通过VideoCapture::get()和VideoCapture::set()获取或设置。
视频捕获属性 是否只在摄像头下使用 含义
CAP_PROP_POS_MSEC 视频文件当前位置的时间
CAP_PROP_POS_FRAMES 从零开始下一帧的索引
CAP_PROP_POS_AVI_RATIO 视频中的相对位置
CAP_PROP_FRAME_WIDTH 视频帧的像素宽度
CAP_PROP_FRAME_HEIGHT 视频帧的像素高度
CAP_PROP_FPS 录制视频的帧速率
CAP_PROP_FRAME_FOURCC 四个字符代码指示编解码
CAP_PROP_FRAME_COUNT 视频文件中的帧总数
CAP_PROP_FORMAT 返回的Mat对象的格式·
CAP_PROP_MODE 捕捉模式
CAP_PROP_PROP_BRIGHINESS 是 相机的亮度设置
…… …… ……

3.2 使用cv::VideoWriter对象写入视频
构造函数

VideoWriter(const String& filename, int fourcc, double fps,
                Size frameSize, bool isColor = true);
参数:
filename:写入视频全程。
fourcc:编解码格式。
fps:写入帧速率。
frame_size:帧尺寸大小。
is_color:图像是否为彩色。

写入帧办法

1VideoWriter::writer()2operator<<()

4 数据存储

opencv中可以使用cv::FileStorage()来进行文件的存储和读取。文件存取一般按键值或序列进行格式存储。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值