2011-01-02 3 views
0

У меня проблема с преобразованием System.Drawing.Image в Emgu.CV.Image. я могу загрузить мой образ в formapplicationBitmap-> приложение формы окна изображения

string im_name = str[index]; 
Emgu.CV.Image<Bgr, Byte> img = new Image<Bgr, byte>(im_name); 

но этот код дает мне ошибку недопустимых аргументов

System.Drawing.Image img_btmap = System.Drawing.Image.FromFile(im_name); 

Emgu.CV.Image<Bgr, Byte> img1 = new Image<Bgr, byte>(img_btmap); 

Кто-то знает, почему ??? рассматривает

+0

ухода, чтобы сообщить нам об ошибке в деталях? – fejesjoco

ответ

2

измените строку:

System.Drawing.Bitmap img_btmap = new System.Drawing.Bitmap(im_name); 

Emgu.CV.Image конструктор ожидает Bitmap класс, который наследует от класса Image.

Удостоверьтесь, что вы отправили img_btmap позже, иначе вы рискуете заблокировать файл.

Edit: самый простой способ обеспечения надлежащей Утилизации использует using блок, как это:

using (System.Drawing.Bitmap img_btmap = new System.Drawing.Bitmap(im_name)) 
{ 
    //.....rest of code comes here..... 
} 
+0

Yup, или просто конструктор Image (string). –

+0

u правы, я уже закончил с [System.Drawing.Bitmap img_btmap = new System.Drawing.Bitmap (im_name);], и он работает, но я ожидал другого объяснения, потому что messagaebox показывает уже изображение как растровое изображение. thanx, но как насчет утилизации и опасности блокировки файлов. – Shahgee

+0

@sayyad Bitmap - это изображение, но изображение не является растровым, поэтому он не работал раньше, в отношении утилизации см. мое редактирование. «Опасность» связана с тем, что файл изображения заблокирован (например, t удалите его), пока не произойдет сбор мусора. –

Смежные вопросы