I want to put a PictureBox on WinForm in C # using a Basler camera. But I want to convert IGrabImage to Mat. because I want to insert it into the PictureBox using Mat.
Please let me know your hint or solution.
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);
}
Basler Image:
OpenCvSharp Image: