0
在opencv輪廓檢測中,我得到多個輪廓靠近彼此。在這個圖像中,我必須從每組最近的輪廓中選擇一個輪廓。 我怎樣才能選擇一個組的輪廓。 我知道關於擴張圖像,已經完成,但它不適合我。
看到附加的圖像有四個輪廓。我需要從他們中選擇兩個,每個組中有一個。 怎麼能實現這一點。 從候選輪廓列表中選擇一個輪廓
在opencv輪廓檢測中,我得到多個輪廓靠近彼此。在這個圖像中,我必須從每組最近的輪廓中選擇一個輪廓。 我怎樣才能選擇一個組的輪廓。 我知道關於擴張圖像,已經完成,但它不適合我。
看到附加的圖像有四個輪廓。我需要從他們中選擇兩個,每個組中有一個。 怎麼能實現這一點。 從候選輪廓列表中選擇一個輪廓
如果您有源圖片 &您想查找董事會。你可以按照這個僞代碼。你可以很容易地用C++實現它。 請注意,在這裏我使用CV_RETR_EXTERNAL參數來檢索最外層的輪廓。
Image<Bgr, byte> Img_Result_Bgr = Img_Source_Bgr.Clone();
Image<Gray, byte> Img_Org_Gray = Img_Source_Bgr.Convert<Gray, byte>();
Img_Org_Gray = Img_Org_Gray.ThresholdBinary(new Gray(250), new Gray(255));
#region Finding Contours
using (MemStorage storage = new MemStorage()) //allocate storage for contour approximation
for (Contour<Point> contours = Img_Org_Gray.FindContours(Emgu.CV.CvEnum.CHAIN_APPROX_METHOD.CV_CHAIN_APPROX_NONE, Emgu.CV.CvEnum.RETR_TYPE.CV_RETR_EXTERNAL, storage); contours != null; contours = contours.HNext)
{
Contour<Point> contours_Approximated = contours.ApproxPoly(contours.Perimeter * 0.005,storage);
if (contours.Area > 10) //only consider contours with area greater than 100
{
Img_Result_Bgr.Draw(contours_Approximated, new Bgr(Color.Red), 2);
}
}
#endregion
imageBox1.Image = Img_Result_Bgr;
謝謝,我會在幾分鐘內嘗試......並回復..而我在兩者之間應用@ Random-I-Am的上述方法。 – Vivek
迭代所有輪廓並只選擇在已選輪廓內沒有中心的輪廓時如何? –