GIGE网口相机使用过程中,如何将一帧图像数据转换为Mat格式

18 篇文章 2 订阅
5 篇文章 0 订阅
文章探讨了如何将USB相机捕获的一帧数据转换为OpenCV的Mat格式进行保存和处理。作者提到,对于8位单通道(CV_8UC1)的黑白相机,可以使用frame.frameInfo的高度和宽度以及pData数据来创建Mat对象。虽然示例代码可能不适用于所有GIGE相机,但基本方法具有普遍性。
摘要由CSDN通过智能技术生成

看了好长时间的SDK是如何调用的,没有讲到如何将一帧数据如何进行保存以及进行处理。

在相机实际使用的过程之中,一般是USB相机。USB相机会调用什么Mat格式的数据,使用imwrite将一帧数据信息进行相应的写入。我就在想能不能将一帧数据缓存转换为Mat格式之后再进行保存呢。真的是想了好久,感觉很好弄出来,但是就是总是出现问题。

然后想了想什么cv::Mat的构造函数。

Mat m(10, 10, CV_8UC3, Scalar(125,10,100)); //CV_8UC3表示8位无符号char类型3个通道
                     //Scalar第四位参数表示初始化每个像素值是多少,向量长度对应通道数目

可以见到其中四个函数的含义分别是图片高、图像的宽、图像通道、图像像素值。

在查看SDK的时候,看到了这一行代码,这个地方frame.frameInfo.width代表图像的宽度。整好和第二个参数对应起来,说明思路是对的。此处,我的相机是黑白相机,因此是八位单通道的(CV_8UC1)。也就是最后一个参数还是不知道的,就点入frame函数之中看一看。

当然此时,我不确定是不是这个东西,然后.引用一下,之后就转换成功了。

ret = IMV_GetFrame(devHandle, &frame, 500);

srcImage = cv::Mat(frame.frameInfo.height, frame.frameInfo.width, CV_8UC1, frame.pData);

这一串代码可能不是适用于别的GIGE相机,但是基本思路都是差不多的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值