我有RGB图像,例如,尺寸2×2的如下:复制OpenCV中的像素值
[ 0, 14, 255, 75, 156, 255;
45, 255, 234, 236, 141, 255]
我想复制每个像素(所有RGB通道的)2×2次,并获得看起来像的图像:
[ 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'会做的伎俩。发现一个[类似的问题](http://stackoverflow.com/questions/19342543/enlarge-image-pixels-with-opencv),确认调整大小的想法。虽然,我还没有尝试/使用过这种插值。 – wendelbsilva
你可以请张贴你将如何做到这一点在Matlab? – Miki
Hi @Miki,你是什么意思的Matlab?我虽然你的问题是如何使用OpenCV和C++做到这一点。无论如何,我只是尝试在这里,它的工作原理。我使用了命令'cv :: resize(m,放大,cv :: Size(m.rows * 20,m.cols * 20),20,20,cv :: INTER_NEAREST);'调整20x的大小(所以我可以查看并验证结果)。 – wendelbsilva