Baumer堡盟工业相机BGAPI SDK联合OpenCV进行图像转换二(C#)

该操作指南阐述了如何使用C#将堡盟GAPI相机的图像数据传输到OpenCV进行进一步处理。首先通过GAPISDK设置相机并捕获图像,然后利用Clone、Copy或ConvertTo方法将GAPI缓冲区的图像副本转换为OpenCV的Mat对象。转换后,图像可以被保存或进行其他视觉处理。示例代码展示了如何在EmguCV中实现这一过程。
摘要由CSDN通过智能技术生成

(C#)本操作说明将介绍如何将图像从堡盟GAPI帧缓冲区传输至OpenCV,以便进一步处理。

首先,使用堡盟GAPI SDK设置堡盟相机,并将图像采集到内存,然后将内存中的图像传输至OpenCV,以便将其保存到硬盘上。图像传输到OpenCV后,即可根据需要使用该视觉库进一步处理图像。

将堡盟GAPI缓冲区克隆、复制并转换为OpenCV矩阵

如需获取堡盟GAPI缓冲区中数据的副本,可以使用OpenCV的Clone()、Copy()或ConvertTo()函数。复制后,可以重新对堡盟GAPI缓冲区进行排序,复制的数据也可以通过OpenCV进一步处理。

请注意,OpenCV矩阵中的信息包括图像的宽度、高度和类型(CV_8UC1、CV_8UC3、CV_16UC1、CV_16UC3),而堡盟GAPI缓冲区提供Buffer.FrameID、Buffer.PixelFormat、Buffer.XOffset、Buffer.YOffset以及数据块数据等更多有用的信息。如有必要,您还需复制如下信息。

mDevice.RemoteNodeList["PixelFormat"].Value = "Mono8";

BGAPI2.Buffer mBufferFilled = mDataStream.GetFilledBuffer(1000);
if (mBufferFilled.PixelFormat == "Mono8")
{
    Emgu.CV.Mat imOriginal = new Emgu.CV.Mat((int)mBufferFilled.Height, 
                                             (int)mBufferFilled.Width, 
                                             Emgu.CV.CvEnum.DepthType.Cv8U, 1, 
                                             (IntPtr)mBufferFilled.MemPtr, 
                                             (int)mBufferFilled.Width * 1);

    //3 methods to copy
    Emgu.CV.Mat imClone = imOriginal.Clone();

    Emgu.CV.Mat imCopy = new Emgu.CV.Mat((int)mBufferFilled.Height, 
                                         (int)mBufferFilled.Width, 
                                         Emgu.CV.CvEnum.DepthType.Cv8U, 1);
    imOriginal.CopyTo(imCopy);

    Emgu.CV.Mat imConvert = new Emgu.CV.Mat((int)mBufferFilled.Height, 
                                            (int)mBufferFilled.Width, 
                                            Emgu.CV.CvEnum.DepthType.Cv8U, 1);
    
    imOriginal.ConvertTo(imConvert, Emgu.CV.CvEnum.DepthType.Cv8U, 1.0);

    mBufferFilled.QueueBuffer();

    //use copied image
    Emgu.CV.CvInvoke.Imwrite("cv_image_Clone.png", imClone);
    Emgu.CV.CvInvoke.Imwrite("cv_image_Copy.png", imCopy);
    Emgu.CV.CvInvoke.Imwrite("cv_image_Convert.png", imConvert);
}

注意:这是Baumer SDK和EmguCV的C#的图像数据转换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

格林威

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值