【问题标题】:How to reduce image data size without changing its resolution?如何在不改变分辨率的情况下减小图像数据大小?
【发布时间】:2014-05-08 15:52:26
【问题描述】:

我尝试了几种减小图像大小的方法,但都失败了。都是这样的:

    //Mat frame...
    vector<uchar> buff;
    vector<int> params;
    params.push_back(cv::IMWRITE_JPEG_QUALITY);
    params.push_back(50); //Tried any value here, didn't change much

    cv::imencode(".jpg", frame, buff, params);
    Mat a = cv::imdecode(buff,1);
    // a size is bigger than frame's

如何在不改变分辨率的情况下减小图像(Mat 对象)的大小?

编辑:

我正在从相机中获取帧并制作视频。按原样保存帧会使 1 分钟的视频重约 100mb,这是完全不可接受的。如何减小每帧的大小(字节数)?

【问题讨论】:

  • 什么大小?压缩后的大小?
  • 查看编辑。我认为压缩和解压缩会减小图像大小,但事实并非如此。
  • 这会降低质量。当您使用不同的量化表进行解压缩时,JPEG 图像会降级。
  • 问题是,您需要什么质量?每张图片不能同时拥有全高清和 7KB。
  • 我需要减小每个帧的大小,即使这意味着降低质量。

标签: c++ opencv image-processing signal-processing


【解决方案1】:

您需要video compression like mpeg 而不是图像压缩。

另一种方法可能是先模糊图像,然后将它们编码为 jpeg。模糊会减少熵,因此图像可能会更好地压缩。考虑到您对 JPEG 压缩不满意,要减小图像大小我想您无法避免降低质量,模糊可能不是最糟糕的解决方案,这取决于您的问题。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-23
  • 2020-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多