在边界框内获取对象轮廓

时间:2020-08-19 12:49:43

标签: python opencv image-processing

Input image

我想检测肉的轮廓。我已经训练了用于肉类的对象检测模型。该模型的输出如下所示,左上角的边界框坐标为(44,34),右下角的边界框坐标为(321,348)。

Detected meat

如何通过opencv或其他图像处理库基于此输出对肉的轮廓进行细分?

2 个答案:

答案 0 :(得分:1)

您可以使用Grabcut [1]算法从边界框中提取片段。

Grabcut尝试将像素分为边界框和内部两个组,同时惩罚与相似颜色的相邻像素的标签不一致。

例如:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="viddler-auto-embed" data-embed-id="yLDrFKPE4u" data-video-id="b69c8ee1" data-width="450" data-height="285"></div>

output.png

[1] Rother,Carsten,Vladimir Kolmogorov和Andrew Blake。 “使用迭代图割的GrabCut”交互式前景提取。” ACM Transactions on Graphics(TOG)23.3(2004):309-314。

答案 1 :(得分:0)

您面临的问题是由于顶部的阴影,这使肉在某些地方像背景一样暗。

您可以尝试对图像的红色部分进行二值化处理,然后以形态学上的闭合来去除孔,尽管这会稍微损害轮廓。

enter image description here