Используя (C# , библиотека emgu), как я могу найти определение дефицита бутылки?
Я хочу найти дефицит на бутылке,используя Языке C#EmguCV ,нужно знать этапы обработки изображения-prepossessing && выберите дефицит для расчета его площади ..
Мое входное изображение:
1.jpg - Google Диск[^]
Необходимый результат
Выходное изображение, показывающее, где находится дефект, выполненный с помощью Матлаб После того, как образ-располагающий
2.jpg - Google Диск[^]
Что я уже пробовал:
Как показано ниже кода я пытаюсь сначала :
1-преобразование изображения BGR-to-GRAY
2-пороговое значение бинаризации (делает фон черным)
3-Erode -->На данный момент результат в виде изображения: 3.PNG - Google Диск[^]
Как вы видите ,перебежчики все еще находятся на изображении, и это неправильно, потому что я не могу использовать маскировку на изображении ..
Я не знаю шагов/или того, что я делаю после эрозии, как я могу поставить круг вокруг дефицита
4-После этой маскировки...?
<pre> Image<Bgr, byte> ImgInput; Image<Gray, byte> ImgGray; Image<Gray, byte> ImgBinariz; public Home() { InitializeComponent(); } private void openToolStripMenuItem1_Click(object sender, EventArgs e) { try { OpenFileDialog ofd = new OpenFileDialog(); if (ofd.ShowDialog() == DialogResult.OK) { ImgInput = new Image<Bgr, byte>(ofd.FileName);// 3 dimension ImgGray = ImgInput.Convert<Gray, byte>();//Convert BGR-GRAY pictureBox1.Image = ImgGray.Bitmap; //Binarization thresholding ImgBinariz = new Image<Gray, byte>(ImgGray.Width, ImgGray.Height, new Gray(0));//binay imge with black background // pictureBox1.Image = ImgBinariz.Bitmap; //Make all the image black CvInvoke.Threshold(ImgGray, ImgBinariz, 50, 255, ThresholdType.Otsu); pictureBox1.Image = ImgBinariz.Erode(5).Bitmap; //pictureBox1.Image = ImgBinariz.Bitmap; } } catch(Exception ex) { MessageBox.Show(ex.Message); } }