Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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_Overlay_Javacv - Fatal编程技术网

Opencv 如何用给定的遮罩覆盖图片

Opencv 如何用给定的遮罩覆盖图片,opencv,overlay,javacv,Opencv,Overlay,Javacv,我想在给定的图像中叠加一个图像。我已经创建了一个带有区域的遮罩,我可以在其中放置此图片: 问题是,白色区域包含一个黑色区域,在那里我不能放置对象 如何有效地计算子图像必须放在哪里?我知道一些函数,如PointPolyContest。但这需要很长时间 编辑: 覆盖图像必须放在白色的地方。 例如,在蓝色矩形中的位置 如果我理解正确,您希望将图像放置在遮罩中完全白色的区域(与图像一样大) 在本例中,为了获得有效区域,我将使用与要插入的图像大小相同的内核对遮罩应用腐蚀。侵蚀后,所有有效区域将为白色 但

我想在给定的图像中叠加一个图像。我已经创建了一个带有区域的遮罩,我可以在其中放置此图片:


问题是,白色区域包含一个黑色区域,在那里我不能放置对象

如何有效地计算子图像必须放在哪里?我知道一些函数,如
PointPolyContest
。但这需要很长时间

编辑:

覆盖图像必须放在白色的地方。 例如,在蓝色矩形中的位置



如果我理解正确,您希望将图像放置在遮罩中完全白色的区域(与图像一样大)

在本例中,为了获得有效区域,我将使用与要插入的图像大小相同的内核对遮罩应用腐蚀。侵蚀后,所有有效区域将为白色

但是你展示的图像没有200*200区域是完全白色的,所以我一定是误解了

但是,如果您想计算遮罩中黑色最少的区域,可以应用模糊而不是侵蚀,并在模糊遮罩中查找最大强度像素

在这两种情况下,您都希望插入子图像,使其中心位于腐蚀/模糊遮罩的最大强度像素位置

编辑:

如果您有兴趣找到距离任何黑色像素最远的区域来放置子图像,可以将其中心定义为遮罩距离变换的最大值


祝您好运,

如果我理解正确,您希望将图像放置在遮罩中完全白色的区域(与图像一样大)

在本例中,为了获得有效区域,我将使用与要插入的图像大小相同的内核对遮罩应用腐蚀。侵蚀后,所有有效区域将为白色

但是你展示的图像没有200*200区域是完全白色的,所以我一定是误解了

但是,如果您想计算遮罩中黑色最少的区域,可以应用模糊而不是侵蚀,并在模糊遮罩中查找最大强度像素

在这两种情况下,您都希望插入子图像,使其中心位于腐蚀/模糊遮罩的最大强度像素位置

编辑:

如果您有兴趣找到距离任何黑色像素最远的区域来放置子图像,可以将其中心定义为遮罩距离变换的最大值


祝你好运,

您好,sry图像已下采样,因此大小不匹配。我将用高斯金字塔测试它。谢谢,但我如何定位可以放置图像的区域(CvPoint)?在掩模腐蚀后(在您使用201*201方形内核的情况下),您有不同的选择:1)您可以扫描图像中的白色像素。2) 使用cv::findContours,您可以获得所有有效区域,例如,计算这些区域的中心。3) cv::minMaxLoc以获取最大像素的位置。您好,sry图像已下采样,因此大小不匹配。我将用高斯金字塔测试它。谢谢,但我如何定位可以放置图像的区域(CvPoint)?在掩模腐蚀后(在您使用201*201方形内核的情况下),您有不同的选择:1)您可以扫描图像中的白色像素。2) 使用cv::findContours,您可以获得所有有效区域,例如,计算这些区域的中心。3) cv::minMaxLoc以获取最大像素的位置。