Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在opencv中向下移动图像的一部分(剪切和粘贴)_Opencv_Image Processing_Computer Vision - Fatal编程技术网

在opencv中向下移动图像的一部分(剪切和粘贴)

在opencv中向下移动图像的一部分(剪切和粘贴),opencv,image-processing,computer-vision,Opencv,Image Processing,Computer Vision,我有一部分图像,我想把它向下移动25像素,如图所示 我有要向下移动的区域的遮罩。总图像大小不应更改。因此,操作是剪切和粘贴的。我剪切的区域可以用0或255填充 平台是C++创建两个子映像:第一个子映像围绕要移动的模式,第二个子映像围绕目标,大小与子映像大小相同。将sub1复制到sub2中,然后用黑色或白色填充sub1。显然,您需要使用裁剪为与两个子图像相同大小的遮罩 这是一段伪代码,用来说明这个想法: cv::Mat YourImage; cv::Mat YourMask; std::vect

我有一部分图像,我想把它向下移动25像素,如图所示

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


平台是C++

创建两个子映像:第一个子映像围绕要移动的模式,第二个子映像围绕目标,大小与子映像大小相同。将
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);
cv::matyourmage;
cv::你的面具;
std::矢量轮廓;
cv::Rect sub1ROI=cv::boundingRect(YourPattern轮廓);
cv::Mat sub1=您的图像(sub1ROI);
cv::Mat mask=您的mask(sub1ROI);
cv::Rect sub2ROI=sub1ROI+cv::Point(25,25);
cv::Mat sub2=您的图像(sub2ROI);
sub1.复制到(sub2,掩码);
sub1.set(0,掩码);

创建两个子图像:第一个子图像围绕要移动的图案
sub1
,第二个子图像围绕目标,大小与
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);
cv::matyourmage;
cv::你的面具;
std::矢量轮廓;
cv::Rect sub1ROI=cv::boundingRect(YourPattern轮廓);
cv::Mat sub1=您的图像(sub1ROI);
cv::Mat mask=您的mask(sub1ROI);
cv::Rect sub2ROI=sub1ROI+cv::Point(25,25);
cv::Mat sub2=您的图像(sub2ROI);
sub1.复制到(sub2,掩码);
sub1.set(0,掩码);