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

时间:2019-02-20 21:54:04

标签: c# pleora-sdk

我的Pleora SDK已获得许可,我不是在谈论水印。

有时候,即使图像保存有这些水平线伪像,它也可以保存得很好。

我正在这样保存图像:

import cv2
import numpy as np
import matplotlib.pyplot as plt

img = cv2.imread("RC0307Rf_20180928_1442_001.JPG)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# Chess board is 6x6 with 5x5 internal corners
size = (5,5)

ret, corners = cv2.findChessboardCorners(gray,size,None)

ret

有问题的示例图片:

enter image description here

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

为了避免这个问题,我该怎么做?

1 个答案:

答案 0 :(得分:0)

而不是如上所述使用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);

似乎我再也没有伪像了。