最近做了好多杂活,忙的找不到北,博客也没来得及总结。而且现在记性太差了~~~老是做完就忘,趁着今天完成这个的热乎劲儿赶紧总结一下。
(欢迎加QQ讨论:77248031, 或QQ群:585068192)
图像采集参考了几位大神的博客:
上述几位大神大部分是用Halcon来转存和显示的,或者bitmap介绍的不完全。小编总结吸纳了几位大神的精髓,结合着官方的帮助文档,终于在不用halcon的前题下完成拉~
PS:小编用c# 来写的,因为网上c#的资源最多。话说最近c++, python, c#混着用,脑子里乱成一锅粥了,总是出现类似忘记打分号,忘记定义类型,忘记小括号~要么就是and写成&&,总之各种错乱。
一,首先先配置生成项目,根据官方文档步骤来:
这个没啥好说的,一步步照做就是了,就最后一步,开始我没重视,最后代码写完测试的时候还真的遇到问题了,一直出这样的错:
查了官方文档才看到最后一条~,然后在项目属性中把这个勾掉了,代码完美运行拉……
二,功能步骤
其实整个步骤很简单:
1,首先初始化连接相机:点击Init按钮会有MessageBox打印相机名
2,然后读取配置文件(配置文件是通过官方自带的CamExpert来生成的)读取参数,也可以在程序中配置,本程序有个setting按钮,按一下就可以配置拉,把想配置的参数写在对应的代码块里(当然小编很懒,没做显示的功能,所以按按钮的时候你可能觉得按了个寂寞,但已经配置好了)。还有个读取参数的按钮(当然小编也没做显示的功能,所以也按了个寂寞),但有助于debug的时候查看数据,也可以自己打印出来看看。
3,Snap是快照,可以设置快照的张数,因为写本程序时只有相机没有镜头,所以是黑乎乎一片…但用光源照的时候会呈现白色,所以还是有点反应知道不是卡住的哈哈。
4,Grab就是连续抓取图像了,Freeze是停止。
5,最后的保存结果(没有镜头只能可怜巴巴的用感光性来测试了T_T)
PS:程序最重要的是一个回调函数:m_Xfer_XferNotify,每读取一帧图片的时候会调用这个函数,当然回调函数是自己加的,通过这个命令:
m_Xfer.XferNotify += new SapXferNotifyHandler(m_Xfer_XferNotify);
这条命令和m_Xfer_XferNotify函数是精髓!