Emgucv - ImageBox控件


C#的Winform中用來顯示圖片的控件是PictureBox,而Emgucv中顯示圖片用的是ImageBox。

1.ImageBox屬性

在WinForm中,單擊ImageBox控件,右擊查看屬性頁

(1)FunctionalMode:

Minimun:鼠標在圖像上的任何操作失效

RightClickMenu:僅鼠標右鍵有效

PanAndZoom:僅鼠標滾輪縮放有效

Everything:鼠標滾輪、左鍵框選、右鍵功能均生效。

2.使用方式

(1)按照上篇Emgucv配置;

(2)在工具箱中查找ImageBox控件,拖入winform設計窗體。

(3)通過按鈕事件為ImageBox填充圖片

private void btnReadLocalPic_Click(object sender, EventArgs e)
{
  OpenFileDialog ofdOpenLocalImage = new OpenFileDialog();
  ofdOpenLocalImage.InitialDirectory = @"C:\Users\Public\Pictures"; //設置默認路徑
  ofdOpenLocalImage.Title = "請選擇要打開的圖片";
  ofdOpenLocalImage.Multiselect = true;
  ofdOpenLocalImage.Filter = "jpg圖片|*.jpg|jpeg圖片|*.jpeg|bmp圖片|*.bmp|png圖片|*.png|pdf文件|*.pdf";
  ofdOpenLocalImage.CheckFileExists = true;
  ofdOpenLocalImage.Multiselect = false;
  if (ofdOpenLocalImage.ShowDialog(this) == DialogResult.OK)
  {
    Image<Bgr, byte> img = new Image<Bgr, byte>(ofdOpenLocalImage.FileName);
    this.imgbShow.Image = img;
  }
  else
  {  
    MessageBox.Show("你沒有選擇圖片");
  }
}

(4)使用中有遇到使用上面程序,正確編譯了,但在執行到圖像讀取位置時,出現了異常,單點調試,問題出現在下面這一句:在文件Image.cs中

private void LoadImageUsingOpenCV(FileInfo file)
{
  using (Mat m = CvInvoke.Imread(file.FullName, CvEnum.LoadImageType.AnyColor | CvEnum.LoadImageType.AnyDepth))
  {
    if (m.IsEmpty)
      throw new NullReferenceException(String.Format("Unable to load image from file \"{0}\".", file.FullName));
    LoadImageFromMat(m);
  }
}

通過將Emgucv安裝包下bin目錄下下面幾個文件復制到工程文件的Debug或Release下即可

 3.擴展應用
(1)如何設置通過鼠標滾輪來對圖像進行縮放(以圖像中心為原點)?

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM