如何在不改变分辨率的情况下减小图像数据大小?

时间:2014-03-29 00:32:55

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

我尝试了几种减少图像尺寸的方法,但都失败了。全部类似于:

    //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,这是完全不可接受的。如何减小每帧的大小(字节数)?

1 个答案:

答案 0 :(得分:0)

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

另一种方法可能是首先模糊图像并将它们编码为jpeg。模糊会降低熵,因此图像可能会更好地压缩。考虑到你对JPEG压缩不满意,为了减少图像尺寸,我猜你无法逃避降低质量,模糊可能不是最糟糕的解决方案,这取决于你的问题。