1

看了上面的问题,发现为什么opencv和matlab的resize结果不一样。

但是,当输入数据类型为 UINT16 时,结果仍然不同。

我想知道为什么会这样。

  • 调整插值:双三次(修改后的 opencv 因子:0.75 -> 0.5)。
  • Matlab 抗锯齿选项错误。

matlab(2016a)示例

input = uint16(reshape(0:15,4,4).');
unit16_out = imresize(input, 0.5,'AntiAliasing', false);

[ 2, 5
  10, 13]

openCV(2.4.13.5) 示例

cv::Mat in_16(4, 4, CV_16UC1);
for (int i = 0; i < 16; ++i) {
    in_16.at<unsigned short>(i) = i;
}
cv::Mat out_16;
cv::resize(in_16, out_16, cv::Size(0, 0), 0.5, 0.5, CV_INTER_CUBIC);

[2, 4
11, 13]
4

0 回答 0