Изображение не содержит определения для «Растрового изображения»

#c# #algorithm #opencv #image-processing #emgucv

#c# #алгоритм #opencv #обработка изображений #emgucv

Вопрос:

Я создаю проект по определению формы с помощью emgu CV, но проблема в том, что в последней версии, которая составляет 4.5.4.4788, похоже, нет ссылки на растровое изображение. Я использовал AsBitmap и ToBitmap, но это все равно ошибка. Вот код ниже. Единственная ошибка в том, что он не преобразует его в растровое изображение. Пакеты, которые я использовал, — это Emgu.CV, растровое изображение Emgu.CV и пользовательский интерфейс Emgu.CV.

 using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; using System.Diagnostics; using Emgu.CV; using Emgu.CV.Structure; using Emgu.CV.Util; namespace npr {  public partial class Form1 : Form  {  Imagelt;Bgr, bytegt; imgInput;   public Form1()  {  InitializeComponent();  }   private void btnOpen_Click(object sender, EventArgs e)  {  try  {   OpenFileDialog dialog = new OpenFileDialog();  if (dialog.ShowDialog() == DialogResult.OK)  {  imgInput = new Imagelt;Bgr, bytegt;(dialog.FileName);  pictureBox1.Image = imgInput.Bitmap;  }  }  catch (Exception ex)  {  MessageBox.Show(ex.Message);  }   }  private void button2_Click(object sender, EventArgs e)  {  if (imgInput == null)  {  return;  }  try  {  var temp = imgInput.SmoothGaussian(5).Convertlt;Gray, bytegt;().ThresholdBinaryInv(new Gray(230), new Gray(255));   VectorOfVectorOfPoint contours = new VectorOfVectorOfPoint();  Mat m = new Mat();   CvInvoke.FindContours(temp, contours, m, Emgu.CV.CvEnum.RetrType.External, Emgu.CV.CvEnum.ChainApproxMethod.ChainApproxSimple);   for (int i = 0; i lt; contours.Size; i  )  {  double perimeter = CvInvoke.ArcLength(contours[i], true);  VectorOfPoint approx = new VectorOfPoint();  CvInvoke.ApproxPolyDP(contours[i], approx, 0.04 * perimeter, true);   CvInvoke.DrawContours(imgInput, contours, i, new MCvScalar(0, 0, 255), 2);   //moments center of the shape   var moments = CvInvoke.Moments(contours[i]);  int x = (int)(moments.M10 / moments.M00);  int y = (int)(moments.M01 / moments.M00);   if (approx.Size == 3)  {  CvInvoke.PutText(imgInput, "Triangle", new Point(x, y),  Emgu.CV.CvEnum.FontFace.HersheySimplex, 0.5, new MCvScalar(0, 0, 255), 2);  }   if (approx.Size == 4)  {  Rectangle rect = CvInvoke.BoundingRectangle(contours[i]);   double ar = (double)rect.Width / rect.Height;   if (ar gt;= 0.95 amp;amp; arlt;=1.05)  {  CvInvoke.PutText(imgInput, "Square", new Point(x, y),  Emgu.CV.CvEnum.FontFace.HersheySimplex, 0.5, new MCvScalar(0, 0, 255), 2);  }  else  {  CvInvoke.PutText(imgInput, "Rectangle", new Point(x, y),  Emgu.CV.CvEnum.FontFace.HersheySimplex, 0.5, new MCvScalar(0, 0, 255), 2);  }    }   if (approx.Size == 6)  {  CvInvoke.PutText(imgInput, "Hexagon", new Point(x, y),  Emgu.CV.CvEnum.FontFace.HersheySimplex, 0.5, new MCvScalar(0, 0, 255), 2);  }    if (approx.Size gt; 6)  {  CvInvoke.PutText(imgInput, "Circle", new Point(x, y),  Emgu.CV.CvEnum.FontFace.HersheySimplex, 0.5, new MCvScalar(0, 0, 255), 2);  }   pictureBox2.Image = imgInput.Bitmap;  }  }  catch (Exception ex)  {  MessageBox.Show(ex.Message);  }  }  } }  

Комментарии:

1. Вы уверены BitmapExtension , что установили? AsBitmap и ToBitmap определены в этом классе, вы можете проверить в обозревателе объектов.