0291. 2024-07-13 22:38 采纳率: 0%
浏览 6
已结题

用opencv c/c++ 转换成灰度图,然后做一下直方图均衡输出mp4文件,为啥保存后的视频是0kb

用opencv c/c++ 转换成灰度图,然后做一下直方图均衡输出mp4文件,为啥保存后的视频是0kb

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-07-13 22:38
    关注

    引自免费微信小程序:皆我百晓生

    这个问题可能涉及到多个方面,包括代码的实现问题、视频格式支持问题、保存路径问题等。以下是我根据问题提供的一些分析和建议。假设你已经正确地实现了视频转换到灰度图和直方图均衡化的过程,但在保存视频时遇到了问题。以下是可能的原因和解决方案:

    1. 文件保存路径或文件名错误: 检查你的代码是否正确指定了视频文件的保存路径和文件名。如果路径错误或文件名的格式不正确,可能会导致无法保存文件或保存的文件无法被正确识别。
    2. 视频格式不支持: 确保你保存的视频格式(如MP4)是OpenCV支持的格式。虽然OpenCV通常支持多种视频格式,但如果使用了某些特定的编码或参数,可能会导致无法正确保存。
    3. 编码问题: 在使用OpenCV保存视频时,确保你正确设置了视频的编码参数。错误的编码参数可能会导致视频文件损坏或无法播放。
    4. 内存问题: 确保程序在运行过程中有足够的内存。如果内存不足,可能会导致视频文件保存不完整或无法保存。

    针对这些可能的问题,以下是一个基本的代码示例,展示了如何使用OpenCV的C++ API将视频转换为灰度并进行直方图均衡化,然后保存为MP4文件:

    #include <opencv2/opencv.hpp>
    #include <iostream>
    
    int main() {
        cv::VideoCapture cap("input_video.mp4"); // 输入视频路径
        if (!cap.isOpened()) {
            std::cerr << "无法打开输入视频文件" << std::endl;
            return -1;
        }
    
        cv::VideoWriter writer("output_video.mp4", cv::VideoWriter::fourcc('M','J','P','G'), cap.get(cv::CAP_PROP_FPS), cv::Size(cap.get(cv::CAP_PROP_FRAME_WIDTH), cap.get(cv::CAP_PROP_FRAME_HEIGHT))); // 输出视频参数设置,包括格式、帧率、尺寸等
        if (!writer.isOpened()) {
            std::cerr << "无法创建输出视频文件" << std::endl;
            return -1;
        }
    
        cv::Mat frame, gray, equalized;
        while (true) {
            cap >> frame; // 读取一帧视频
            if (frame.empty()) break; // 如果帧为空,跳出循环
            cvtColor(frame, gray, cv::COLOR_BGR2GRAY); // 转换为灰度图
            equalizeHist(gray, equalized); // 直方图均衡化
            writer.write(equalized); // 写入均衡化后的帧到输出视频文件
        }
        writer.release(); // 释放资源
        cap.release(); // 释放资源
        return 0;
    }
    

    请确保你的开发环境已经正确配置了OpenCV库,并且输入的视频文件路径是正确的。此外,请检查你的计算机是否支持MP4编码,如果不支持,你可能需要安装额外的编解码器或更改输出格式。如果问题仍然存在,请提供更多关于你的代码和环境的信息,以便我能更准确地诊断问题。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月13日
  • 创建了问题 7月13日

悬赏问题

  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题
  • ¥50 如何将脑的图像投影到颅骨上