2014-09-23 5 views
5

Ich brauche das Bild mit Schwellenwert nicht. Ich möchte die Schwelle. Ich habe das in OpenCV gefunden.Was ist die Funktion zum Finden von Otsu-Schwelle in Emgu cv?

cv::threshold(orig_img, thres_img, 0, 255, CV_THRESH_BINARY+CV_THRESH_OTSU); 

Gibt es ein Äquivalent in EmguCv. Danke im Voraus.

PS. Ich muss diese Schwelle für canny Kanten Detektor verwenden

+0

keine Ahnung von emgu, aber der * Rückgabewert * von cv :: threshold ist der Otsu-Schwellenwert im obigen Fall. (also müssen Sie wahrscheinlich noch cv :: threshold aufrufen, auch wenn Sie thresh_img wegwerfen) – berak

+0

Danke! Ich habe die Schwellenwertfunktion über CvInvoke aufgerufen und es funktioniert – Siddarth

Antwort

8

Sie können diesen Code für Auto Canny Edge Detektor verweisen!

Image<Gray, byte> Img_Source_Gray = Img_Org_Gray.Copy(); 
Image<Gray, byte> Img_Egde_Gray = Img_Source_Gray.CopyBlank(); 
Image<Gray, byte> Img_SourceSmoothed_Gray = Img_Source_Gray.CopyBlank(); 
Image<Gray, byte> Img_Otsu_Gray = Img_Org_Gray.CopyBlank(); 

Img_SourceSmoothed_Gray = Img_Source_Gray.SmoothGaussian(3); 
double CannyAccThresh = CvInvoke.cvThreshold(Img_EgdeNR_Gray.Ptr, Img_Otsu_Gray.Ptr, 0, 255, Emgu.CV.CvEnum.THRESH.CV_THRESH_OTSU | Emgu.CV.CvEnum.THRESH.CV_THRESH_BINARY); 
double CannyThresh = 0.1 * CannyAccThresh; 
Img_Otsu_Gray.Dispose(); 

Img_Egde_Gray = Img_SourceSmoothed_Gray.Canny(CannyThresh, CannyAccThresh); 
imageBox2.Image = Img_Egde_Gray; 
+1

Danke. Es klappt!. Ich wusste nicht, dass man OpenCV-Funktionen direkt mit CvInvoke aufrufen kann. – Siddarth

+0

Ich weiß, dass dieser Beitrag ziemlich alt ist, aber kennt jemand den Äquivalenzcode für EmguCV 3.x? Weil es die Funktion CvInvoke.cvThreshold und die Enum Emgu.CV.CvEnum.THRESH nicht enthält. –

Verwandte Themen