【问题标题】:What's wrong with resize's function on OpenCV?OpenCV 上 resize 的功能有什么问题?
【发布时间】:2015-04-01 08:32:49
【问题描述】:

这就是我今天想知道的:

我正在尝试通过此代码将图像缩放为 4x4 像素:

Mat image4x4;

vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_PNG_COMPRESSION);
compression_params.push_back(9);

resize(imageFromFile, image4x4, Size(4,4), INTER_CUBIC);
imwrite("/Users/macuser/Desktop/4x4/"+names.at(i), image4x4, compression_params);

我的结果是这样的:

但是使用任何其他工具,例如 Photoshop、GIMP,结果是这样的:

使用CUBIC 以及此软件。

我的实现有什么问题?我不是在考虑任何参数吗?

非常感谢。


例子:

更新:在线尝试使用缩放器,我得到了同样的错误结果。 所以...也许我有兴趣了解 GIMP 的功能。

【问题讨论】:

  • 你看here at line 3099了吗?也许系数或参数略有不同。
  • GIMP 不提供 X 和 Y 轴...我想它们是 0(因为 OpenCV 默认是)

标签: opencv image-scaling


【解决方案1】:

根据我在图像处理中学到的知识,调整大小是通过一些 2 的幂的迭代来处理的。其余的是插值。

所以我所做的是:调整到最接近 2 的幂(因此,找到第一个大小

例如,如果我的 N 为 10、2^10 = 512,我必须将大小调整为 256、128、64、32、16、8 和 4:

for (int i = 512; i>=4; i = i/2) {
        resize(image4x4, image4x4, Size(i,i), 0, 0, INTER_CUBIC);
}

而且工作得很好;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-15
    • 2012-05-27
    • 1970-01-01
    • 2018-12-12
    • 1970-01-01
    • 2018-02-19
    • 2015-05-27
    • 2018-03-22
    相关资源
    最近更新 更多