#c# #image-processing #emgucv #watershed
#c# #обработка изображений #emgucv #водораздел
Вопрос:
у меня есть изображение крови, и я применил к нему водораздел .. он работает и определяет ячейки, но я не знаю, как поместить каждую ячейку в отдельное изображение.. я работаю с emgu.cv могу ли я получить некоторую помощь
здесь я сегментирую изображение, используя мой метод водораздела, а затем помещаю маркер на исходное изображение
Image<Gray, Int32> boundaryImage = watershedSegmenter.Process(image);
Image<Gray, Byte> test = watershedSegmenter.GetWatersheds(); Image<Bgr, byte>dest=new Image<Bgr, byte>(image.Width, image.Height);
dest = image.And(image, test);
pictureBox1.Width = boundaryImage.ToBitmap().Width;
pictureBox1.Height = boundaryImage.ToBitmap().Height;
pictureBox1.BackgroundImage = boundaryImage.ToBitmap();
Ответ №1:
Похоже, что в EmguCV cvWatershed() есть некоторые ошибки, которые еще не устранены. Изображение маркера всегда возвращает белое изображение. Можете ли вы поделиться своими выходными изображениями первого этапа? Я не могу просмотреть какие-либо изображения, используя этот код.
Image<Bgr, Byte> image = Img_Source_Bgr.Copy();
Image<Gray, Int32> marker = new Image<Gray, Int32>(image.Width, image.Height);
Rectangle rect = image.ROI;
marker.Draw(
new CircleF(
new PointF(rect.Left rect.Width / 2.0f, rect.Top rect.Height / 2.0f),
/*(float)(Math.Min(image.Width, image.Height) / 20.0f)*/ 5.0f),
new Gray(255),
0);
Image<Bgr, Byte> result = image.ConcateHorizontal(marker.Convert<Bgr, byte>());
Image<Gray, Byte> mask = new Image<Gray, byte>(image.Size);
CvInvoke.cvWatershed(image, marker);
CvInvoke.cvCmpS(marker, 0.10, mask, CMP_TYPE.CV_CMP_GT);
imageBox1.Image = mask;
Комментарии:
1. я использую код, написанный на этой странице, и это работает >> yy-programer.blogspot.com/2012/11 /… >> извините за опоздание