测量图片中不规则形状的实际尺寸

时间:2016-11-05 16:23:07

标签: opencv math shape emgucv measurement

我在阵列中有两个“轮廓”形状,一个是我知道他的实际尺寸的方形,另一个是我需要进行比例测量的痣。 这是图像示例:

enter image description here

方形有10x10mm,我怎么知道基于方形的其他形状的大小?

我到目前为止尝试的是:

var molePerimeter = CvInvoke.ArcLength(contours[0], false);
double moleArea = CvInvoke.ContourArea(contours[0], false);
var squarePerimeter = CvInvoke.ArcLength(squares[0], true);
double squareArea = CvInvoke.ContourArea(squares[0], false);
textBox2.AppendText("Area: " + squareArea / moleArea);
textBox2.AppendText("perimeter: " + squarePerimeter / molePerimeter);

但我不认为这是正确的。

1 个答案:

答案 0 :(得分:1)

假设痣可能呈圆形,你可以使用cv::boundingRect(),它会返回cv::Rect(),你可以用来获得痣的矩形尺寸。

类似地,您具有白色贴片的矩形尺寸。假设痣的尺寸为(w1 x h1),白色斑块的尺寸为(w2 x h2)。

现在计算摩尔w维度的真实尺寸:

real_w_patch, real_h_patch = 10, 10

real_w_mole = w1/w2 * real_w_patch
real_h_mole = h1/h2 * real_h_patch

注意:确保所有变量都是float或double,以便进行精确计算。