C# emgucv 關於“嘗試讀取或寫入受保護的內存。這通常指示其他內存已損壞。” 解決辦法

出現原因:Mat轉換爲Bitmap顯示圖像的同時,向richTextBox打印數據,就會報錯。單獨使用正常。

Mat outImg = new Mat();
//中間代碼省略...
pictureBox1.Image = outImg.Bitmap;//問題出在這

for (int i = 0; i < 32; i++)
{
     for (int j = 0; j < 32; j++)
      {
            richTextBox1.AppendText(arr[i, j].ToString() + " ");
       }
      richTextBox1.AppendText("\r\n");
 }
 richTextBox1.AppendText("\r\n");
 richTextBox1.ScrollToCaret();

解決辦法:將Mat轉換爲image,再轉換爲bitmap輸出。

//將Mat轉換爲image,再轉換爲bitmap輸出。
Bitmap bmp1 = new Bitmap(512, 512, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
Image<Bgr, Byte> m = outImg.ToImage<Bgr,Byte>();  
bmp1 = m.ToBitmap();


//==================修改之後的代碼===================================
Mat outImg = new Mat();
//中間代碼省略...
//--------------修改部分---------------------------
//pictureBox1.Image = outImg.Bitmap;//問題出在這
Image<Bgr, Byte> m = outImg.ToImage<Bgr,Byte>();  
bmp1 = m.ToBitmap();
pictureBox1.Image = bmp1;
//------------------------------------------------

for (int i = 0; i < 32; i++)
{
     for (int j = 0; j < 32; j++)
      {
            richTextBox1.AppendText(arr[i, j].ToString() + " ");
       }
      richTextBox1.AppendText("\r\n");
 }
 richTextBox1.AppendText("\r\n");
 richTextBox1.ScrollToCaret();

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章