Pleora SDK 将位图保存为 jpg 时的水平线伪影

Pleora SDK Horizontal Line Artifacts when saving bitmap to jpg

我的Pleora SDK是授权的,我说的不是水印。

有时保存得很好,有时保存的图像带有这些水平线伪影。

我正在这样保存图像:

PvBuffer buffer;
PvResult operationalResult;
var filename = "...some filename...";
var result = stream.RetieveBuffer(ref buffer, ref operationalResult, 100);

if(result.IsOK())
{
    PvImage image = buffer.Image;
    var bitmap = new System.Drawing.Bitmap(
        width: (int)image.Width,
        height: (int)image.Height,
        format: PixelFormat.Format24bppRgb
    );

    image.CopyToBitmap(bitmap);

    bitmap.save(filename, ImageFormat.Jpeg);
}

有问题的示例图片:

我说的就是那两条横线。有时它们存在,有时不存在,有时只有 1 行。

我可以做些什么来避免这个问题?

而不是如上所述使用 image.CopyToBitmap(bitmap);。当我为 PvStream

分配缓冲区时,我将 OpenCV Mat (Emgu) 附加到 PvImage
Mat mat = new Mat(
    rows: height, 
    cols: width, 
    type: DepthType.Cv8U, 
    channels: 1
);

buffer.Buffer.Image.Attach(
    aRawBuffer: (byte*)mat.DataPointer, // <-- Needs to be in an `unsafe` method
    aSizeX: (uint)width,
    aSizeY: (uint)height,
    aPixelType: PvPixelType.BayerRG8
);

当我检索缓冲区时,我会进行颜色转换,因为相机会捕获 BayerRG8(平均花费大约 9 毫秒):

Mat rgb = new Mat(rows: mat.Rows, cols: mat.Cols, type: DepthType.Cv8U, channels: 3);
CvInvoke.CvtColor(matFromPvBuffer, rgb, ColorConversion.BayerRg2Rgb);

并保存:

rgb.Bitmap.Save(path, ImageFormat.Jpeg);

看来我再也没有得到神器了。