gpt4 book ai didi

c++ - 在 OpenCV 中复制像素值

转载 作者:太空狗 更新时间:2023-10-29 20:23:30 25 4
gpt4 key购买 nike

我有 RGB 图像,例如大小为 2x2,如下所示:

[  0,  14, 255,  75, 156, 255;
45, 255, 234, 236, 141, 255]

我想将每个像素(所有 RGB channel )复制 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。

最佳答案

您可以将 resize 与最近邻插值一起使用 INTER_NEAREST:

代码:

Mat mInput(2, 2, CV_8UC3),mOutput(4, 4, CV_8UC3);

mInput.at<Vec3b>(0,0)= Vec3b(0,14,255);
mInput.at<Vec3b>(0,1)= Vec3b(75,156,255);
mInput.at<Vec3b>(1,0)= Vec3b(45,255,234);
mInput.at<Vec3b>(1,1)= Vec3b(236,141,255);

cout<<mInput<<"\n";

resize(mInput,mOutput,Size(4,4),0,0,INTER_NEAREST);

cout<<mOutput<<"\n";;

输出

[  0,  14, 255,  75, 156, 255;
45, 255, 234, 236, 141, 255]
[ 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]
Press any key to continue . . .

感谢@wendelbsilva 在评论中指出这一点。

关于c++ - 在 OpenCV 中复制像素值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32954303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com