图像、视频和数据文件

  HighGUI,可移植的图形工具包

  图像文件处理 (Working with Image File)

  加载和保存图像,即读写文件

  cv::imread(),读取文件

  函数原型

cv::Mat cv::imread(
    const string& filename, // Input filename
    int flags = cv::IMREAD_COLOR // Flags set how to interpret file
);

  该函数在图像加载失败时,并不抛出异常,只返回一个空的cv::Mat(cv::Mat::empty()==true)

  cv::imwrite(),写文件

  函数原型

bool cv::imwrite(
    const string& filename, // Input filename
    cv::InputArray image, // Image to write to file
    const vector<int>& params = vector<int>() // (Optional) for parameterized fmts
);

  该函数在图像保存成功时,返回一个true,否则返回一个false

  图像压缩和解压缩

  cv::imread和cv::imwrite都是由多个子模块构成的,可以将子模块单独使用,也可以作为一个整体使用,特别是在内存中对图像进行压缩和解压缩

  cv::imencode(),压缩文件

  函数原型

void cv::imencode(
    const string& ext, // Extension specifies codec
    cv::InputArray img, // Image to be encoded
    vector<uchar>& buf, // Encoded file bytes go here
    const vector<int>& params = vector<int>() // (Optional) for parameterized fmts
);

  cv::imdecode(),解压缩文件

  函数原型

cv::Mat cv::imdecode(
    cv::InputArray buf, // Encoded file bytes are here
    int flags = cv::IMREAD_COLOR // Flags set how to interpret file
);

  视频文件处理(Working with Video)

  cv::VideoCapture::VideoCapture类对象,读取视频文件

  函数原型,依据不同的视频源,调用三种不同的函数创建VideoCapture类对象

cv::VideoCapture::VideoCapture(
    const string& filename, // Input filename
);
cv::VideoCapture::VideoCapture(
    int device // Video capture device id
);
cv::VideoCapture::VideoCapture();

  你需要在计算机中安装适当的视频解码器,以成功的读取视频文件

  cv::VideoCapture::read(),读取视频帧

  函数原型

bool cv::VideoCapture::read(
    cv::OutputArray image // Image into which to read data
);

  cv::VideoCapture::operator>>(),读取视频帧

  函数原型

cv::VideoCapture& cv::VideoCapture::operator>>(
    cv::Mat& image // Image into which to read data
);

  cv::VideoCapture::grab() ,读取视频帧

  将当前可用视频读到用户不可见的内存缓冲区,为什么设计成不可见,因为读取的视频是没有加工过的,只是为了快速的读到内存而已  

  函数原型

bool cv::VideoCapture::grab( void );

  cv::VideoCapture::retrieve(),读取视频帧

  函数原型

bool cv::VideoCapture::retrieve(
    cv::OutputArray image, // Image into which to read data
    int channel = 0 // Used for multihead devices
);
原文地址:https://www.cnblogs.com/GoldenEllipsis/p/12974041.html