Я хочу поставить PictureBox на WinForm в C #, используя камеру Basler.Но я хочу конвертировать IGrabImage в Mat.потому что я хочу вставить его в PictureBox, используя Mat.
Пожалуйста, дайте мне знать вашу подсказку или решение.
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:
OpenCvSharp Image: