【问题标题】:Compress Mat into Jpeg And save the result into memory将 Mat 压缩成 Jpeg 并将结果保存到内存中
【发布时间】:2016-02-05 17:34:38
【问题描述】:

我知道函数cv::imwrite可以将cv::Mat压缩成Jpeg并保存到文件中。但是现在我想将它保存到内存中,就像uchar 的数组一样。因此,我可以将数组发送到另一个数组,它可以将数据写入 jpeg 文件。有没有人可以帮帮我?

【问题讨论】:

    标签: c++ opencv jpeg mat


    【解决方案1】:

    如果您选择的编程语言是 Java,请使用:

    Highgui.imencode("jpg", mat, buffer)

    【讨论】:

    • OP的问题被标记为c++
    • 在javascript或typescript中怎么做?
    【解决方案2】:

    因为您没有指定编程语言。我将用 C++ 给你答案。

        std::vector<uchar> buff;//buffer for coding
        std::vector<int> param(2);
        param[0] = cv::IMWRITE_JPEG_QUALITY;
        param[1] = 80;//default(95) 0-100
        cv::imencode(".jpg", mat, buff, param);
    

    【讨论】:

    • 我试过这个,但是如果我将buff写入jpeg文件,我无法将文件作为jpeg图片打开。当我尝试打开它时,出现错误。
    • 无法使用 jpg 格式,例如 'imshow'.. 您必须先对其进行“解码”。
    • 如果他将接收到的数据作为字节流写入某个文件,我认为它会起作用。关键是“永远不要将 JPEG 流作为图像处理。它不是图像
    • 你说的图像是指图片文件还是Mat类型的数据?
    • 理论上它们是相同的。实际上,由于压缩算法和压缩比,您会发现一些差异
    猜你喜欢
    • 2011-07-23
    • 2017-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    相关资源
    最近更新 更多