Ich bin ein Projekt zu tun emgucv mit einfachen geometrischen Formen zu identifizieren. Ich verwende folgenden Code, um Pentagon-Formen zu identifizieren. aber wenn ich es ausführe, zeigt es auch Fünfecke und Kreise. Ich will nur Fünfecke als Ausgang. Ich habe bereits Kreise, Rechtecke und Dreiecke identifiziert. Wie werden nur Fünfecke mit diesem Code angezeigt?
Danke!Wie zu erkennen, Fünf- und Sechsecke in EmguCv
public Image<Bgr, Byte> My_Image;
public Image<Gray, Byte> grayImage;
public Image<Gray, Byte> cannyEdges;
grayImage = My_Image.Convert<Gray, byte>();
public void CannyEdgeDetection()
{
try
{
double cannyThresholdLinking = 120.0;
cannyEdges = grayImage.Canny(cannyThreshold, cannyThresholdLinking);
lines = cannyEdges.HoughLinesBinary(
1, //Distance resolution in pixel-related units
Math.PI/45.0, //Angle resolution measured in radians.
20, //threshold
10, //min Line width
10 //gap between lines
)[0]; //Get the lines from the first channel
}
catch (Exception ex)
{
throw ex;
}
}
public void DetectPentagons()
{
try
{
CannyEdgeDetection();
using (MemStorage storage = new MemStorage())
for (
Contour<Point> contours = cannyEdges.FindContours(
Emgu.CV.CvEnum.CHAIN_APPROX_METHOD.CV_CHAIN_APPROX_SIMPLE,
Emgu.CV.CvEnum.RETR_TYPE.CV_RETR_EXTERNAL,
storage);
contours != null;
contours = contours.HNext)
{
Contour<Point> currentContour = contours.ApproxPoly(contours.Perimeter * 0.05, storage);
if (currentContour.Area > 100)
{
if (currentContour.Total == 5)
{
grayImage.Draw(contours, new Bgr(Color.Red), 10);
pictureBox2.Image = obj.grayImage.Bitmap;
}
}
}
}
catch (Exception ex)
{
throw ex;
}
}
Randbemerkung: 'catch (Exception ex) { Wurf ab; } 'ist als nutzlos schlimmer, weil es den Stack-Trace tilgt. Wenn Sie eine Ausnahme nicht sinnvoll behandeln, sollten Sie sie besser nicht abfangen - entfernen Sie einfach den try/catch-Block vollständig. Wenn Sie einen Haltepunkt in der Lage sein, dort zu setzen oder es oder etwas einzuloggen, dann rufen Sie einfach 'werfen,', 'nicht werfen ex', und der Stapel-Spur bleiben erhalten. – Blorgbeard
ok habe es. Weißt du, wie man mit diesem Code nur Fünfecke anstelle anderer Formen anzeigt? – RuwanH