簡體   English   中英

Basler 相機圖像 OpenCvSharp3

[英]Basler camera image OpenCvSharp3

我想使用 Basler 相機在 C# 中的 WinForm 上放置一個 PictureBox。 但我想將 IGrabImage 轉換為 Mat。 因為我想使用 Mat 將它插入到 PictureBox 中。

請讓我知道您的提示或解決方案。

PixelDataConverter converter = new PixelDataConverter();

    public Form1() {
        InitializeComponent();
        using (Camera camera = new Camera())
        {
            camera.CameraOpened += Configuration.AcquireContinuous;

            camera.Open();
            camera.Parameters[PLCameraInstance.MaxNumBuffer].SetValue(5);
            camera.StreamGrabber.Start();

            IGrabResult grabResult = camera.StreamGrabber.RetrieveResult(5000, TimeoutHandling.ThrowException);

            using (grabResult)
            {
                if (grabResult.GrabSucceeded) {
                    Mat rtnMat = convertToMat(grabResult);                       
                    Cv2.ImShow("test", rtnMat);
                    pictureBox1.Image = BitmapConverter.ToBitmap(frame);
                }
            }

            camera.StreamGrabber.Stop();
            camera.Close();
        }
    }

    private Mat convertToMat(IGrabResult rtnGrabResult) {
        IImage image = rtnGrabResult;
        converter.OutputPixelFormat = PixelType.BGR8packed;
        byte[] buffer = image.PixelData as byte[];
        return new Mat(rtnGrabResult.Width, rtnGrabResult.Height, MatType.CV_8UC1, buffer);
    }

巴斯勒圖片:

巴斯勒影像

OpenCvSharp 圖片:

OpenCvSharp 圖像

這是將 IGrabResult 轉換為 OpenCvSharp.Mat 的正確方法。 我沒有在沒有轉換器的情況下嘗試過,但您的主要問題是新 Mat(..) 參數的順序。 在 OpenCV 中,首先聲明行,然后聲明列。 這意味着首先是高度,然后是寬度。 而且像@Nyerguds 說的那樣,彩色圖像的 MatType 也是錯誤的。 它必須是 CV_8UC3。

更正的代碼:

private Mat convertToMat(IGrabResult rtnGrabResult) {
        converter.OutputPixelFormat = PixelType.BGR8packed;
        byte[] buffer = new byte[conv.GetBufferSizeForConversion(rtnGrabResult];
        converter.Convert(buffer, rtnGrabResult);
        return new Mat(rtnGrabResult.Height, rtnGrabResult.Width, MatType.CV_8UC3, buffer);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM