Я пытаюсь применить фильтр Собела к моему изображению, чтобы обнаружить края, как вы можете видеть здесь:
Image<Gray, Byte> imgProcessed1;
private void Form1_Load(object sender, EventArgs e)
{Image<Bgr, Byte> imgProcessed=new Image<Bgr, byte>(@"C:\Users\Public\Pictures\Sample Pictures\1.jpg");
imgProcessed1 = imgProcessed.Convert<Gray, byte>();
Image<Gray, Single> img_final = (imgProcessed1.Sobel(1, 0, 5));
pictureBox1.Image = img_final.ToBitmap();
}
но результат очень необычный, я такой новый в opencv.
мой вывод
Мне нужен этот результат.
мне просто нужно применить этот фильтр
спасибо всем мой друг, я наконец нашел решение:
Image<Gray, byte> gray = new Image<Gray, byte>(@"C:\Users\Public\Pictures\Sample Pictures\1.jpg");
Image<Gray, float> sobel = gray.Sobel(0, 1, 3).Add(gray.Sobel(1, 0, 3)).AbsDiff(new Gray(0.0));
pictureBox1.Image = sobel.ToBitmap();
Согласно документации opencv:
http://docs.opencv.org/2.4/doc/tutorials/imgproc/imgtrans/sobel_derivatives/sobel_derivatives.html
Вы должны использовать оператор sobel следующим образом:
Sobel( src_gray, grad_x, ddepth, 1, 0, 3, scale, delta, BORDER_DEFAULT );
Функция принимает следующие аргументы:
Я надеюсь, что это поддержит ваш вопрос.