2015-11-15 2 views
2

у меня есть другой вопрос. Идк, что происходит, пытался попытаться сделать детектор края Канни. Проблема в том, что когда я хочу обнаруживать ребра на простой форме, такой как квадрат, программа может ее обнаружить. Но когда я хочу обнаружить фигуры на не очень простой графической программе, просто дает мне изображение, заполненное только черным цветом. У вас есть идея, что происходит?EmguCV Canny черный окно

Я использую этот код ниже:

public Bitmap CannyEdge(Bitmap bmp) 
    { 
     Image<Gray, Byte> Cannybmp; 
     Image<Gray, Byte> GrayBmp; 
     Image<Bgr, Byte> orig = new Image<Bgr, Byte>(bmp); 
     Image<Bgr, Byte> imgSmooth; 
     Bitmap output; 

     imgSmooth = orig.PyrDown().PyrUp(); 
     imgSmooth._SmoothGaussian(3); 
     GrayBmp = imgSmooth.Convert<Gray, byte>(); 

     Gray grayCannyThreshold = new Gray(160.0); 
     Gray grayThreshLinking = new Gray(80.0); 

     Cannybmp = GrayBmp.Canny(grayCannyThreshold.Intensity, grayThreshLinking.Intensity); 
     output = Cannybmp.ToBitmap(); 

     //int a = 5; 
     return output; 

    } 

private void button1_Click(object sender, EventArgs e) 
    { 
     Bitmap bmp = new Bitmap(pictureBox1.Image); 
     pictureBox2.Image = CannyEdge(bmp); 
    } 

ответ

1

Вы пытались установить grayCannyThreshold стать меньшим значением вашего grayThreshLinking?

Gray grayCannyThreshold = new Gray(80.0); 
Gray grayThreshLinking = new Gray(160.0); 
+0

Да, я попробовал ... Но я узнал, что EmguCV 3.0 сломал функцию pyrDown() ... поэтому я использовал только pyrUp(), что должно быть хорошо для меня :) – Apuna12

Смежные вопросы