在 OpenCV 中放大对象轮廓
Enlarging objects contours in OpenCV
根据我的图像,我创建了一个二进制掩码来标记一些对象(一张图像上最多三到四个对象)。
比方说,我面具上那些标记的物体的总表面场为 X
。
现在我想放大它们的轮廓,这样剩下的space(黑色区域)的表面积为X
。
如果他们拍摄的图像超过 50%
,那么我想保持不变。
我会做以下事情。计算掩码的距离变换 M。然后取一些合理的距离 d > 0 作为起始值。然后进行二进制搜索,即如果 M < d 小于总图像的 X%,则设置 d = 2d,如果它大于 X%,则设置 d = d/2。重复此操作几次,直到精度足以满足您的需求。
根据我的图像,我创建了一个二进制掩码来标记一些对象(一张图像上最多三到四个对象)。
比方说,我面具上那些标记的物体的总表面场为 X
。
现在我想放大它们的轮廓,这样剩下的space(黑色区域)的表面积为X
。
如果他们拍摄的图像超过 50%
,那么我想保持不变。
我会做以下事情。计算掩码的距离变换 M。然后取一些合理的距离 d > 0 作为起始值。然后进行二进制搜索,即如果 M < d 小于总图像的 X%,则设置 d = 2d,如果它大于 X%,则设置 d = d/2。重复此操作几次,直到精度足以满足您的需求。