首页 > 编程知识 正文

拍摄中遇到的问题和解决方案,工业ccd相机图像识别

时间:2023-05-05 08:06:04 阅读:112301 作者:1114

1、相机连接超时waitforbuffer(uinttimeout ); //相机触发收集超时时间设定为1000ms,在出站模式下1秒以上未收集到图像时报告错误。 解决方法:用捕捉异常的方法跳过try。 ……//用捕捉异常的方法防止线程中断。 打开线程循环以启动相机,避免相机断开或不启动而出现异常。 witforbuffer (单元时间输出; }catch(exceptione ) { continue; ) 2、设置外部触发模式采集异常外部触发模式,启动相机后直接跳出连续的同一帧图像,实际编码器未旋转。 cam-set param (profiletriggermode,) EncoderResolverInterfaceRS422 ); 解决方案:代码编写过程中参数设置错误。 如果通过相机附带的软件设置采集参数,同样出现异常的图像帧,代码应该没有问题。

考虑到编码器的电压异常,用电压表测量了编码器输入端子电压,结果为-3V左右,有异常的电源输入。 从伺服电机上拆下光电编码器,重新测量电压后,电压恢复正常,异常为来自伺服电机的干扰。

备注: 1、光电编码器是高灵敏度器件,必须避免外界电磁干扰,采取保护措施。

2、工业相机采集是一个多系统协作的过程,出现问题要多方面考虑,避免单点思维的限制。

3、软件编制注重单元测试,逐步完成。

3、单线程采集卡吨MainWindow主线程采集图像,展示数据,使用if(cv:3360waitkey(1)!=1) break; 画图像界面的话,界面会有点模糊。 照相机断电等,需要重新启动软件,体验感不好。 另外,相机的显示保存速度跟不上,容易引起数据的画面脱落,无法保证系统的稳定性。 解决方案:采用多线程编程,在软件启动时预设三个线程。 1、更新维护设备状态线程,如果设备脱机或未启动,可以尝试重新连接设备,连接10次以上后停止或设置重新启动时间。 这个线程可以通过时间计时器实现,定时开始检查。 2、维持一个公共队列,两只线程解析收集的原始数据,推入公共队列的末尾。 3、从公共队列中打开一个线程,保持队列状态,如果队列长度超过一个数据,则打开新线程处理数据。 请注意,在读取队列之前确定队列是否为空,如果不为空,则检索第一个数据并增加已处理的数量。 4、图像固定模式噪声相机工艺如何消除固定噪声? 作为想法,存在不平衡的问题。 固定噪声模式、特征和定位1、采用平均算法平衡像素值2、比较与周围像素的差分,采用插值算法调整周围像素5、未显示捕获异常,但线程退出后捕获异常是否写入线程循环外部应该主要针对摄像机连接超时函数将捕获异常写入循环内部,特别要注意循环的异常捕获是线程内部还是外部。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。