gpt4 book ai didi

c++ - 使用 OpenCV 移动图像内容

转载 作者:IT老高 更新时间:2023-10-28 12:49:54 32 4
gpt4 key购买 nike

从一张图片开始,我想将其内容向上移动 10 个像素,而不改变大小并将底部的子图像(width x 10px)填充为黑色。

比如原文:

Original

还有转移的:

Shifted

OpenCV有什么函数可以执行这个操作吗?

最佳答案

您可以简单地使用仿射变换平移矩阵(基本上用于移动点)。 cv::warpAffine() 使用适当的变换矩阵就可以了。

TranslationMatrix [1,0,tx ; 0,1,ty]

在哪里:tx 是图像 x 轴的偏移,ty 是图像 y 轴的偏移,图像中的每个像素都会像这样移动。

您可以使用此函数返回平移矩阵。 (这对你来说可能是不必要的)但它会根据 offsetxoffsety 参数移动图像。

Mat translateImg(Mat &img, int offsetx, int offsety){
Mat trans_mat = (Mat_<double>(2,3) << 1, 0, offsetx, 0, 1, offsety);
warpAffine(img,img,trans_mat,img.size());
return img;
}

在你的情况下 - 你想将图像向上移动 10 像素,你打电话:

translateImg(image,0,-10);

然后你的形象就会随心所欲地变换。

关于c++ - 使用 OpenCV 移动图像内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19068085/

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