Собственно, есть некий Bitmap (с форматом пикселей Format8bppIndexed: после преобразования в Grayscale). Как мне его преобразовать в IplImage (формат изображения OpenCV).
Пробовал так:
public static Bitmap Binaryze(Bitmap inBitmap)
{
var g = new GrayscaleY();
var inGray = g.Apply(inBitmap);
var inPtr = IntPtr.Zero;
var bd = inGray.LockBits(new Rectangle(0, 0, inGray.Width, inGray.Height), ImageLockMode.ReadWrite,
PixelFormat.Format8bppIndexed);
try
{
inPtr = bd.Scan0;
var b1 = Sauvola.Convert(inPtr, 15, 0.05, 256);
var b2 = Benrsen.Convert(inPtr, 3, 100);
inGray.UnlockBits(bd);
...
}
...
}
Внутри, к примеру, Sauvola:
public class Sauvola
{
public static Bitmap Convert(IntPtr src, int Size = 31, double K = 0.9, int R = 32)
{
var srcImage = new IplImage(src, true);
var imgSaulova = new IplImage(srcImage.Size, BitDepth.U8, 1); //вот тут ошибка. Очевидно, что srcImage вышел каким-то "не таким"
Binarizer.SauvolaFast(srcImage, imgSaulova, Size, K, R);
return imgSaulova.ToBitmap();
}
}
Выдает ошибку BadImageFormatException.
Использую AForge, OpenCVSharp.