不支持源或模板图像的像素格式.阿奥赫成像

本文关键字:格式 成像 像素 图像 不支持 | 更新日期: 2023-09-27 18:30:39

我在ProcessImage(bitmap1, bitmap2)得到以下异常;

Unsupported Pixel Format of source or template image

这是我的代码:

public static double FindComparisonRatioBetweenImages(
    System.Drawing.Image one, System.Drawing.Image two)
{
    Bitmap bitmap1 = new Bitmap(one);
    Bitmap bitmap2 = new Bitmap(two);
    ExhaustiveTemplateMatching tm = new ExhaustiveTemplateMatching(0);
    TemplateMatch[] matchings = null;
    matchings = tm.ProcessImage(bitmap1, bitmap2); // Exception occurs here!
    return matchings[0].Similarity;
}

我也将以下代码中的managedImage传递到方法中,但它仍然给出错误:

UnmanagedImage unmanagedImageA = UnmanagedImage.FromManagedImage(bitmap1);
Bitmap managedImageA = unmanagedImageA.ToManagedImage();
UnmanagedImage unmanagedImageB = UnmanagedImage.FromManagedImage(bitmap2);
Bitmap managedImageB = unmanagedImageB.ToManagedImage();
  1. 我从我的电脑随机传递了图像,它们都给出了例外。
  2. 我已经将用油漆编辑的空白图像传递到该方法中,它仍然给出异常。
  3. 还检查了,jpeg,png,bmp格式,没有任何工作。

不支持源或模板图像的像素格式.阿奥赫成像

尝试ExhaustiveTemplateMatching

类实现了详尽的模板匹配算法,该算法对源图像进行完整扫描,将每个像素与模板的相应像素进行比较。

该类仅处理灰度 8 bpp 和彩色 24 bpp 图像。

因此,这些是您必须使用的图像格式。

根据要求,要转换为特定的像素格式,您可以执行以下操作:

public static Bitmap ConvertToFormat(this Image image, PixelFormat format)
{
    Bitmap copy = new Bitmap(image.Width, image.Height, format);
    using (Graphics gr = Graphics.FromImage(copy))
    {
        gr.DrawImage(image, new Rectangle(0, 0, copy.Width, copy.Height));
    }
    return copy;
}

您将使用的那个是 System.Drawing.Imaging.PixelFormat.Format24bppRgb .