1
votes

Currrently, I am trying to get my face image from the database but I cannot get it. Its saying my I cannot convert System.Drawing.Image to EmguCV Gray Byte. Can I know whats my mistake on it. This is my first time I am using EmguCV.

 //Eigen face recognizer
 EigenObjectRecognizer recognizer = new 
 GetFaceFromDB(), //database
 labels.ToArray(), //facename list
 3000,
 ref termCrit);

 name = recognizer.Recognize(result);

This is my DB code:

private Image GetFaceFromDB()
    {
        Image FetchImg;
        if (rowNumber >= 0)
        {
            byte[] FetchImgBytes = ((byte[])TSTable.Rows[rowNumber]["FaceImage"]);
            System.IO.MemoryStream stream = new System.IO.MemoryStream(FetchImgBytes);
            FetchImg = Image.FromStream(stream);
            return FetchImg;
        }
        else
        {
            MessageBox.Show("No Image yet. Add image into database");
            return null;
        }
    }

Thank you.

1

1 Answers

0
votes

Well the problem is the conversion.

If you are using an image like this

Image<Gray,Byte> image = new Image<Gray,Byte> 

initialized like this then you need to call image.Bitmap to get a System.Drawing.Image

If you are trying to do the reverse you should call something like this

Image<Gray, Byte> image = new Image<Gray, Byte>(BitmapImage); 

Then your code should work correctly.

Hope this helps!