我有一部分图像,我想将其下移25个像素,如图所示。

我的遮罩我想向下移动的区域。图像总大小不应更改。因此,该操作被剪切并粘贴。我剪切的区域可以填充0或255。

平台是C++

最佳答案

创建两个子图像:第一个围绕您要移动的图案的sub1,第二个与目标周围的sub2大小相同的sub1。将sub1复制到sub2,然后用黑色或白色填充sub1。显然,您需要使用以与两个子图像相同的大小裁剪的蒙版。

这是伪代码,以说明此想法:

cv::Mat YourImage;
cv::Mat YourMask;
std::vector<cv::Point> YourPatternContour;

cv::Rect sub1ROI = cv::boundingRect(YourPatternContour);
cv::Mat sub1 = YourImage(sub1ROI);
cv::Mat mask = YourMask(sub1ROI);

cv::Rect sub2ROI = sub1ROI + cv::Point(25,25);
cv::Mat sub2 = YourImage(sub2ROI);

sub1.copyTo(sub2, mask);
sub1.set(0, mask);

关于opencv - 在opencv中向下移动图像的一部分(剪切和粘贴),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15157433/

10-14 10:32