我有一部分图像,我想将它向下移动 25 个像素,如图所示。
我有要向下移动的区域的掩码。总图像大小不应改变。因此,操作是剪切和粘贴。我切割的区域可以用 0 或 255 填充。
平台是 C++
我有一部分图像,我想将它向下移动 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);