2016-11-05 19 views
1

私は2つの「輪郭」形状を配列に持っており、1つのコントローはその実サイズを知る正方形であり、もう1つは比例測定を行うために必要なものです。 ここでは画像の例である:画像内の不規則な形状の実寸を測定する

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); 

しかし、私はいけないことがcorretであると考えています。

+0

1)カメラの軸が白い正方形に垂直であることを確認する必要があります。そうでない場合、ひずみを導入します。つまり、モルはカメラから白い四角と同じ距離です。 2)臼歯の面積、周長、または長軸/短軸を知りたいですか? –

+0

@MarkSetchell私は周囲、面積とモルの長さを取得します。正方形が1x1cmであることを知っていると、私は実際のサイズを取得しようとします。しかし、私はこれをどのように計算しますか? – fdfey

答えて

1

モルがおそらく円形であると仮定すると、cv::boundingRect()を使用すると、cv::Rect()が返されます。モルの長方形の寸法を得るために使用することがあります。

同様に、白いパッチの長方形の寸法があります。モルの次元が(w1 x h1)であり、白のパッチの次元が(w2 x h2)であるとします。

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または正確な計算を行うために二重のいずれかであることを確認してください現実世界の寸法w.r.tモルの大きさを計算するために今すぐ

+0

結果は「ピクセル」になりますか? – fdfey

+0

この場合、白いパッチ「mm」と同じ次元では結果はありません。 – ZdaR

関連する問題