我有一个冶炼立方体的图像,随着时间的推移形成一个液滴。到目前为止,我提取了它的轮廓,但接下来我需要区分物体和表面。我的想法是检测物体接触表面的角落,但我很难找到一个合理的方法如何这样做(最好使用opencv的c ++接口)。我很感激任何建议
以下是提取轮廓的一些示例:
编辑: @Haris:
我尝试了一个你的建议的变体,它正在为我做这个工作:
在近似轮廓i中,从左侧逼近,寻找具有指定范围内的值的第一个角度,然后从右侧开始。由于近似轮廓点是原始轮廓点的子集,然后我识别原始序列中的2个角点,并在两个角处切割它。中间部分我作为液滴,左右部分,我重新定位为我的表面线。可能有更好,更稳定的方法,但这对我有用。谢谢!
答案 0 :(得分:7)
您可以尝试这种方法,
假设您有像P1,P2,P3等近似点...
现在计算连续线之间的角度,即线(P1,P2),线(P2,P3)等之间的角度。并检查每条调整线的角度差异,如果差异接近90度你可以说有一个角落。
对于Angle,您可以使用等式
double Angle = atan2(y2 - y1, x2 - x1) * 180.0 / CV_PI;