C#应用视频教程3.1 USB工业相机测试
图像处理是工控很有价值的一个领域,比如人脸识别,车牌识别,还有产品的位置识别,瑕疵检测,对于个人学习来说,我们无法直接上手几万块的成熟工业相机(高端的康耐视要6万左右,而且是黑白的,要测试一些带颜色的算法功能无法实现),先要用便宜的东西做一些简单的测试(原则上做教程不应该涉及硬件,因为如果读者无法按照你的硬件标准学习,那也只能走马观花看一遍,但是实际上要做工控必须要涉及硬件,可以先从简单的便宜的开始入手)
淘宝是比较靠谱的方案,我自己测试买的是下面这个品牌的(不是要给他们做广告,读者也可以自己淘宝找,基本上300万像素+开发的SDK肯定是够用了,如果你几百块也不愿意掏,笔记本自带的USB摄像头也是可以用的)
https://item.taobao.com/item.htm?spm=a1z10.1-c.w7874616-7250487742.3.45ee61bbSIGhsG&id=35665919843
注意买相机也要买镜头(单相机是不能用的,买什么样的适配镜头可以问卖家,讲清楚你要做什么应用)
https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-12792600741.30.45ee61bb6b1V1X&id=551842092602
如果可能最好再加一个支架和光源(我个人的测试环境有支架,所以不需要,仅仅是测试使用光源也无所谓,我手动调节镜头的曝光就行了)
我刚开始玩这个的时候很穷,所以只能随便找了块板子打个孔,然后就开始测试了(没有人条件很充分的,几年以后我再回过头来把这一块东西理理顺,也只是为了培训带人)
对于具体型号的工业相机,一般需要安装相机提供的驱动,比如我这个就把相机连接到电脑的USB口,手动安装驱动
用微软自带的视频设备能够打开(假定就拍摄显示器的画面)
用它自带的调试软件测试能够正常使用(可以调整分辨率)
可以进行详细的参数设置(拍照,视频,曝光等)
运行软件提供的SDK测试(注意需要把对应的DLL放到C:/Windows/System32/目录下,如果是32位系统则复制SDK的那个DLL文件,如果是64为则复制SDK64的那个DLL文件)
运行C#的范例程序(点击Play可以显示实时的画面),如果不能运行修改目标平台为对应的系统版本(我是64位系统)
有了C#的范例,基本上我们能够把硬件采集图像的这一块内容搞定了,大量的比如调节曝光,图像翻转,设置分辨率等等功能我们都可以直接照抄范例代码的,注意这部分不管怎么弄目的都是获取我们期望的图像而已,一般越清晰越好(我们后面要介绍的是图像处理,所以本节并不是重点,事实上你从工业相机采集图像也是采集,从USB的摄像头也是,或者没有摄像头直接用图片也可以,你自己PS几个图片也能测试视觉系统的算法)
注意他这个范例代码有一块使用了指针直接覆盖采集到图像的数据(比如把某一块的像素填充为红色),不要觉得是相机坏掉了,它上面还有一部分注释掉的代码可以测试其他功能
除了C#的开发范例,他也提供了C++,QT等其他语言的实现范例和SDK的说明书(我们看一个产品做的是否到位,就只要看他给的资料全不全,因为目前用C#测试以后也可能换成别的语言,所以选择一款产品就要考虑到后期的平台移植,尽量用好一样东西,不要这也会那也玩过,结果一样都不精通。当然我还是那句话,我不是给这个商家在做广告,只是告诉读者一些工控的经验和教训,有时候并不能仅仅判断便宜一两百块钱就轻易下结论买哪家的,如果我们考虑工业使用,肯定不是是USB的,而是几千块的以太网通讯的相机,在那个价位的产品上挑一个好一点的)
最后介绍几个相机的常用概念:
Gama:伽玛值。可以认为是一种控制图像清晰度的一个参数,Gamma值越大,则取得的图像像素越精细,成像越逼真
Contrast:对比度,这个很好理解,以前看黑白电视机的时候经常用到,对比度调大一点,物体与周围的对比会更明显一点
Exposure:曝光度,感觉跟Gain用处差不多,可以认为是Gain的微调吧,我把Exposure从1040调到5000也没有关系,可见他是可以微调亮度的。Exposure在调小的时候就很敏感,太小了就直接乌黑一片,当然正常不会去乌黑一片的。
Gain:在相机里Gain表示高光度,Gain limit 是感光度的范围,数码相机的影像传感器是不可更换的,为了得到不同的感光度,它需要在信号的A/D转换时变换信号增益(Gain)。如果光线暗,就需要提高感光度即加大增益,这会降低信噪比,也就是增大了噪点。从下面三个不同的高光度可以发现,就像高光度越大,则越亮。Gain的用处就是在黑暗的时候要手动把高光度调大一点,成像才能清晰。
ROI:就是感兴趣窗口(Region of interest),比如一副2048*1536的图像非常大,处理起来很慢,我们设置感兴趣窗口只有200*200的这么一个小块,就可以每次只提取大图像的一小块做处理,可以显著的提升效率
更多教学视频和资料下载,欢迎关注以下信息:
我的优酷空间:
http://i.youku.com/acetaohai123
我的在线论坛:
http://csrobot.gz01.bdysite.com/
问题交流:
QQ:910358960
C#应用视频教程3.1 USB工业相机测试的更多相关文章
- usb工业相机之硬件设计-双缓冲-双端口sdram-fpga
usb工业相机之硬件设计-双缓冲-双端口sdram-fpga 在前期的产品设计中,采用cb提供的结构,68013直接操作摄像头,iic配置摄像头寄存器,板载晶振提供时钟,摄像头的pclk直接接ifcl ...
- C#应用视频教程3.4 Halcon+C#测试
有了前面的基础后,我们来测试一下如何把程序做的更通用,首先是把初始化的方法修改一下,在初始化的时候传递过去HTuple这个对象(改成了全局的变量,以便于不同的方法调用) 其次需要有相机打开/相机关 ...
- C#应用视频教程3.3 Halcon+C#测试
接下来我们考虑把Halcon的代码移植到C#程序上,首先找到halcon的dll(.NET类库有1.0,2.0,3.5的,如果你安装了更新版本的halcon则有更新的.NET类库,我们复制最新的dll ...
- USB鼠标按键驱动
现象:把USB设备接到PC 1. 右下角弹出"发现android phone" 2. 跳出一个对话框,提示你安装驱动程序 问1. 既然还没有"驱动程序",为何能 ...
- USB Key插入和移除监控
近期在做USB Key插入和移除监控,已经做到了插入和移除USB Key时,程序能够及时感应到. 如下为源代码: private void Form1_Load(object sender, Even ...
- USB眼图
/********************************************************************** * USB眼图 * 说明: * 对于USB眼图,并不是很 ...
- USB设备驱动_WDS
1. usb_alloc_dev中的 bus_type 中指定了匹配函数,和uevent中的环境参数. ====>不同的bus_type的匹配函数可能是不同的,uevent的环境变量参数也可能是 ...
- 【转】实战USB接口手机充电 看3.0/2.0谁更快
原文网址:http://mb.it168.com/a2012/0816/1385/000001385641_all.shtml [IT168 应用]当下,越来越多的电脑都已普及USB 3.0接口,新买 ...
- USB设备驱动程序学习笔记(一)
现象:把USB设备接到PC1. 右下角弹出"发现android phone"2. 跳出一个对话框,提示你安装驱动程序 问1. 既然还没有"驱动程序",为何能知道 ...
随机推荐
- Linux 下安装gmpy2
GMP(GNU Multiple Precision Arithmetic Library,即GNU高精度算术运算库),它是一个开源的高精度运算库,其中不但有普通的整数.实数.浮点数的高精度运算,还有 ...
- POJ 3735 Training little cats<矩阵快速幂/稀疏矩阵的优化>
Training little cats Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 13488 Accepted: ...
- WPF常用控件样式( 内含一简单插件式开发示例)
最近离职,离职前面的一份外派然后又外包的工作,总觉得不妥,之后外派的办个入职手续都一再失约,干脆推了.恰逢清明时节,暴雨纷纷,于是打算先休息休息调整下状态,工作的事情还是谨慎点的好,免得影响心情.话说 ...
- 欧拉回路 uoj117
写了一道欧拉回路的模板题.先判断是否是欧拉回路,有向图和无向图有一点点不同,然后就是特判独立点的存在. 之后是输出路径,和dls学的dfs,利用last数组的更新可以做到线性的复杂度,否则一不小心就会 ...
- Stirling数,Bell数,Catalan数,Bernoulli数
组合数学的实质还是DP,但是从通式角度处理的话有利于FFT等的实现. 首先推荐$Candy?$的球划分问题集合: http://www.cnblogs.com/candy99/p/6400735.ht ...
- 【暴力】Gym - 100851A - Adjustment Office
题意:给你一个n*n的矩阵,初始时,(x,y)的值为x+y.可能有两类操作,一类是对某一行求和,并将这一行置零:另一类是对某一列求和,并将这一列置零. 维护四个值:一个是列标号之和,一个是当前存在的列 ...
- Mac 下解压NDK .bin文件
Mac Android Studio 开发NDK,首先下载NDK文件----->android-ndk-r10d-darwin-x86_64.bin 1.打开终端获取文件权限 chmod a+x ...
- 【8.22校内测试】【数学】【并查集】【string】
今天的t2t3能打出来80分的暴力都好满足啊QwQ.(%%%$idy$ 今天的签到题,做的时候一眼就看出性质叻qwq.大于11的所有数分解合数都可以用4.6.9表示,乱搞搞就可以了. #include ...
- JSONObject 和 JSONArray 的区别和用法
JSONObject 和 JSONArray 的数据表现形式不同: JSONObject的数据是用 { } 来表示的,例如: { "id" : "1", &q ...
- BZOJ 1040 ZJOI 2008 骑士 树形DP
题意: 有一些战士,他们有战斗力和讨厌的人,选择一些战士,使他们互不讨厌,且战斗力最大,范围1e6 分析: 把战士看作点,讨厌的关系看作一条边,连出来的是一个基环树森林. 对于一棵基环树,我们找出环, ...