OpenCV——保存图片和视频

保存图片 imwrite

bool cv :: imwrite(const String& filename,InputArray img,Const std::vector<int>& params = std::vector<int>())
  • 16位无符号(CV_16U)图像可以保存成PNG、JPEG、TIFF格式文件;
  • 32位浮点(CV_32F)图像可以保存成PFM、TIFF、OpenEXR和Radiance HDR格式文件;
  • 4通道(Alpha通道)图像可以保存成PNG格式文件。

暂时没有用到复杂的图像保存

基本都是8位三通道彩色图

简单示例代码

//
// Created by smallflyfly on 2021/6/9.
//

#include "opencv2/video.hpp"
#include "opencv2/core.hpp"
#include "opencv2/highgui.hpp"
#include <iostream>


using namespace std;
using namespace cv;

int main() {

    VideoCapture cap(0);
    if (!cap.isOpened()) {
        cout << "read camera error!" << endl;
        return -1;
    }
    Mat frame;
    cap >> frame;

    // 保存图片
    imwrite("test.jpg", frame);

    cap.release();

    return 0;
}

保存视频 VideoWriter

cv :: VideoWriter :: VideoWriter(); //默认构造函数

cv :: VideoWriter :: VideoWriter(const String& filename,
                                       int fourcc,
                                       double  fps,
                                       Size frameSize,
                                       bool  isColor=true
                                       )
  • filename:保存视频的地址和文件名,包含视频格式
  • fourcc:压缩帧的4字符编解码器代码,详细参数在表2-7给出。
  • fps:保存视频的帧率,即视频中每秒图像的张数。
  • framSize:视频帧的尺寸
  • isColor:保存视频是否为彩色视频

 简单示例代码

//
// Created by smallflyfly on 2021/6/9.
//

#include "opencv2/core.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/video.hpp"

#include "iostream"

using namespace cv;
using namespace std;

int main() {
    VideoCapture cap(0);
    if (!cap.isOpened()) {
        cout << "read camera error!" << endl;
        return -1;
    }
    VideoWriter videoWriter;
    // 编码格式
    int coder = VideoWriter::fourcc('M', 'J', 'P', 'G');
    double fps = 25.0;
    Mat frame;
    cap >> frame;
    videoWriter.open("test.avi", coder, fps, frame.size(), true);
    while (cap.isOpened()) {
        cap >> frame;
        videoWriter.write(frame);
        imshow("camera", frame);

        if (waitKey(1) == 'q') {
            break;
        }
    }
    videoWriter.release();
    cap.release();

    destroyAllWindows();

    return 0;
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值