我在阵列中有两个“轮廓”形状,一个是我知道他的实际尺寸的方形,另一个是我需要进行比例测量的痣。 这是图像示例:
方形有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);
但我不认为这是正确的。
答案 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,以便进行精确计算。