项目场景:
Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。
Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具有快速数据传输、低功耗、易于集成以及高度可扩展性等特点。
特殊环境类项目,使用高速高稳定并自带高防护的VLXT.28M.IBaumer万兆网相机作为相机主体,它属于万兆网系列中的一种,使用该相机可以保证图像质量的前提下提高图像传输速度。
相机型号:VLXT-28M.I
目的是实现相机在全帧率下采集保存图片500张/S。
技术背景
为什么有些应用需要使用工业相机全帧率将图像保存到硬盘空间?
因为工业相机的设计是为了捕捉具有高速和高分辨率的图像,并且能够产生具有高比特深度的未经压缩的图像。
这允许实时捕获详细和高质量的图像,这在制造业和科学研究等行业可能是必要的,因为准确和快速的图像数据采集是至关重要的。
此外,使用工业相机可以确保在图像采集和存储过程中没有图像质量的损失,从而获得更可靠和一致的结果。
有几种方法可以将工业网口相机的图像高速保存到计算机硬盘上,包括:
1. 直接通过相机软件。许多工业相机都配有软件,可以直接将图像保存到计算机硬盘上。
2. 使用网络连接存储(NAS)设备。可以使用NAS设备将图像直接从相机保存到网络存储设备,然后由计算机访问。
3. 通过第三方软件。第三方软件应用程序也可以用来连接到相机的网络端口,并将图像保存到计算机的硬盘上。
4. 使用专用的图像采集卡。一些工业相机可能需要在计算机上安装一个专用的图像采集卡,然后可以用它来捕捉和保存相机的图像。
问题描述
Baumer相机软件Camera Explorer的Recorder功能分为3块:
1、按照设定时间或者设定数量保存相机图片到本地硬盘
2、按照设定时间保存成视频
3、按照设定时间或者设定数量保存相机图片到本地内存
使用万兆网卡和万兆网相机在帧率满帧的情况下,如500fps,使用Recorder功能一的进行图像存储到硬盘时,设置3s后发现保存的图像不良不足1500张,有1-9张缺失:
原因分析:
Baumer相机软件Camera Explorer的Recorder功能分为3块:
1、按照设定时间或者设定数量保存相机图片到本地硬盘
2、按照设定时间保存成视频
3、按照设定时间或者设定数量保存相机图片到本地内存
Camera Explorer的Recorder功能1的高速存图方式为一边采集一边存图,但是可能硬盘的写入速度不够的情况会导致部分图片存储失败的情况
解决方案:
更换电脑硬盘,使用读写速度满足采集帧率速度的硬盘作为存图硬盘路径。
在电脑内存空间满足的情况下,将图像写入内存中,即为使用Recorder功能三memory进行保存图像,最后再逐个释放的方式进行高速存储。
如下为在相机回调函数里高速保存图像的代码:
void mDataStream_NewBufferEvent(object sender, BGAPI2.Events.NewBufferEventArgs mDSEvent) { try { BGAPI2.Buffer mBufferFilled = null; mBufferFilled = mDSEvent.BufferObj; if (mBufferFilled == null) { MessageBox.Show("Error: Buffer Timeout after 1000 ms!"); } else if (mBufferFilled.IsIncomplete == true) { //MessageBox.Show("Error: Image is incomplete!"); //queue buffer again mBufferFilled.QueueBuffer(); } else { #region//获取当前FrameID FrameIDInt = (int)mBufferFilled.FrameID; OnNotifySetFrameID(FrameIDInt.ToString()); #endregion //将相机内部图像内存数据转为bitmap数据 System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap((int)mBufferFilled.Width, (int)mBufferFilled.Height, (int)mBufferFilled.Width, System.Drawing.Imaging.PixelFormat.Format8bppIndexed, (IntPtr)((ulong)mBufferFilled.MemPtr + mBufferFilled.ImageOffset)); #region//Mono图像数据转换。彩色图像数据转换于此不同 System.Drawing.Imaging.ColorPalette palette = bitmap.Palette; int nColors = 256; for (int ix = 0; ix < nColors; ix++) { uint Alpha = 0xFF; uint Intensity = (uint)(ix * 0xFF / (nColors - 1)); palette.Entries[ix] = System.Drawing.Color.FromArgb((int)Alpha, (int)Intensity, (int)Intensity, (int)Intensity); } bitmap.Palette = palette; #endregion //回调函数保存图像功能 if (bSaveImg) { //使用bitmap自带函数保存 string strtime = DateTime.Now.ToString("yyyyMMddhhmmssfff"); string saveimagepath = pImgFileDir + "\\" + strtime + ".jpg"; bitmap.Save(saveimagepath, System.Drawing.Imaging.ImageFormat.Bmp); bSaveImg = false;//变量控制单次保存图像 } #region//bitmap的图像数据复制pBitmap Bitmap clonebitmap = (Bitmap)bitmap.Clone(); BitmapData data = clonebitmap.LockBits(new Rectangle(0, 0, clonebitmap.Width, clonebitmap.Height), ImageLockMode.ReadOnly, clonebitmap.PixelFormat); clonebitmap.UnlockBits(data); pBitmap = clonebitmap; #endregion mBufferFilled.QueueBuffer(); } } }
高速相机的优点
工业相机的高速拍摄功能的优点
1、能够清晰、精确地捕捉快速移动的物体,这对制造业和体育等行业非常重要。
2、通过高速拍摄,工业相机可以捕捉到运动中部件和产品的图像,从而可以发现缺陷和质量问题。
3、这项技术对于分析运动员和动物的运动也是至关重要的,可以为训练员和教练员提供深入了解。
4、高速拍摄功能允许慢动作回放,使人们能够进一步分析所拍摄的画面。
5、包括能够捕捉快速移动物体的图像而不产生运动模糊,提高测量物体速度和位置的准确性,以及实时检测和分析快速过程和变化的能力。
6、这些相机可以在各种行业中发挥作用,包括制造业、自动化、机器人技术等。
7、高速成像可以为流程提供有价值的见解,并帮助公司优化其运营,以提高效率和生产力。
高速相机的的行业应用
高速相机被用于各个行业的不同应用。
1. 汽车:高速摄像机用于捕捉碰撞测试的图像和视频,分析发动机的燃料喷射,以及车辆的动态。
2. 航空航天。高速摄像机用于测试航天器和飞机中使用的材料的强度和完整性。它也被用来拍摄火箭和导弹的发射。
3. 制造业。高速摄像机用于对生产线进行质量控制检查。它还被用来捕捉和分析工业流程,以提高效率。
4. 体育业。高速摄像机用于捕捉和分析体育表演。它被用于田径、游泳、跳水和体操等运动。
5. 科学研究。高速摄像机用于物理学、生物学和化学研究,研究流体动力学、材料科学和分子反应。
6. 军事。高速相机用于测试军事设备的性能和有效性,如武器、炸药和装甲等。