在opencv中切换图像的一部分(剪切和粘贴)

时间:2013-03-01 12:09:24

标签: opencv image-processing computer-vision

我有一部分图像,我希望将其向下移动,如图所示的25像素。

enter image description here

我想要向下移动的区域掩码。总图像大小不应更改。因此,操作是剪切和粘贴。我剪切的区域可以用0或255填充。

平台是C ++

1 个答案:

答案 0 :(得分:2)

创建两个子图像:您要移动的模式周围的第一个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);