• c++调用相机进行保存


    调用相机进行保存

    cv::VideoWriterOpenCV 中的一个类,用于将图像序列保存为视频文件。它提供了一个方便的方法,可以将一系列帧以特定的编码方式写入视频文件,从而创建自定义的视频。

    cv::VideoWriter(const String& filename, int fourcc, double fps, Size frameSize, bool isColor = true);
    
    
    参数
    	filename: 要保存的输出视频文件的文件名,可以包括文件扩展名(如 ".avi"、".mp4" 等)。
        fourcc: 一个四字符编码,用于指定视频编解码器。通常,使用四字符编码是指定视频文件的编码方式。例如,cv::VideoWriter::fourcc('M', 'J', 'P', 'G') 表示使用 MJPEG 编码器,cv::VideoWriter::fourcc('X', 'V', 'I', 'D') 表示使用 XVID 编码器。你可以根据需要选择合适的编码器。
        fps: 视频的帧率,表示每秒显示的帧数。
        frameSize: 视频帧的大小,通常是一个 cv::Size 对象,包括宽度和高度。
        isColor: 一个布尔值,指示是否保存彩色视频。如果为 true,则保存彩色视频,如果为 false,则保存灰度视频。
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    相机保存视频的案例
    #include 
    
    int main() {
        // 打开摄像头或加载视频文件
        cv::VideoCapture cap(0); // 0 表示默认摄像头
        
        if (!cap.isOpened()) {
            std::cerr << "Error: Could not open camera!" << std::endl;
            return -1;
        }
        
        // 获取摄像头的帧宽度和帧高度
        int frameWidth = static_cast<int>(cap.get(cv::CAP_PROP_FRAME_WIDTH));
        int frameHeight = static_cast<int>(cap.get(cv::CAP_PROP_FRAME_HEIGHT));
        
        // 创建 VideoWriter 对象来保存视频
        cv::VideoWriter videoWriter("output.avi", cv::VideoWriter::fourcc('M','J','P','G'), 30, cv::Size(frameWidth, frameHeight));
        
        if (!videoWriter.isOpened()) {
            std::cerr << "Error: Could not create video file!" << std::endl;
            return -1;
        }
        
        cv::Mat frame;
        
        while (true) {
            // 读取一帧视频
            cap >> frame;
            
            if (frame.empty()) {
                // 如果没有帧可读,退出循环
                break;
            }
            
            // 在这里可以对帧进行处理
            
            // 写入帧到视频文件
            videoWriter.write(frame);
            
            // 显示帧
            cv::imshow("Video", frame);
            
            // 检测按键,如果按下 'q' 键则退出循环
            if (cv::waitKey(30) == 'q') {
                break;
            }
        }
        
        // 释放摄像头和 VideoWriter 资源
        cap.release();
        videoWriter.release();
        cv::destroyAllWindows();
        
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
  • 相关阅读:
    网络安全学习--操作系统安全防护
    c++ 11 原子操作库 (std::atomic)(一)
    中软国际:战略携手三大伙伴,三线出击收割AI红利
    22. 从零用Rust编写正反向代理,一个数据包的神奇HTTP历险记!
    QT Day5
    Docker镜像的配置
    语音芯片基础知识 什么是语音芯 他有什么作用 发展趋势是什么
    细数35个单元测试准则
    minio文件服务器开启https
    【好文收藏】【持续更新】今天你机器学习了吗
  • 原文地址:https://blog.csdn.net/qq_46107892/article/details/133311004