【发布时间】:2019-09-12 19:08:54
【问题描述】:
我有 RGB 图像,例如大小为 2x2 如下:
[ 0, 14, 255, 75, 156, 255;
45, 255, 234, 236, 141, 255]
我想将每个像素(所有 RGB 通道)复制 2x2 次并获得如下所示的图像:
[ 0, 14, 255, 0, 14, 255, 75, 156, 255, 75, 156, 255;
0, 14, 255, 0, 14, 255, 75, 156, 255, 75, 156, 255;
45, 255, 234, 45, 255, 234, 236, 141, 255, 236, 141, 255;
45, 255, 234, 45, 255, 234, 236, 141, 255, 236, 141, 255 ]
在 Matlab 或 Python 中,我只需使用 kron 函数即可完成此操作,但我无法弄清楚如何在 OpenCV C++ 中轻松完成此操作。请注意,这是一个简单的示例,我实际上希望将每个像素复制 16x16 并在更大的图像上执行此操作,当然不是 2x2。
【问题讨论】:
-
我认为
cv::resize与插值INTER_NEAREST会成功。找到了一个similar question 证实了调整大小的想法。虽然,我还没有尝试/使用过这种插值。 -
你能发布一下你在 Matlab 中是如何做到这一点的吗?
-
嗨@Miki,Matlab 是什么意思?我虽然你的问题是如何使用 OpenCV 和 C++ 来做到这一点。无论如何,我只是在这里尝试过,它可以工作。我使用命令
cv::resize(m, enlarged, cv::Size(m.rows*20, m.cols*20), 20, 20, cv::INTER_NEAREST);将大小调整为 20 倍(这样我可以查看并验证结果)。 -
@wendelbsilva 我在问 OP 他将如何在 Matlab 中做到这一点......
-
操作.. 我的错。我以为你是 Op.