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文件是否使用而知格式 0或1 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:图像是否为彩色。
写入帧办法
(1)VideoWriter::writer()
(2)operator<<()
4 数据存储
opencv中可以使用cv::FileStorage()来进行文件的存储和读取。文件存取一般按键值或序列进行格式存储。