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. 既然还没有"驱动程序",为何能知道 ...
随机推荐
- 【JAVAWEB学习笔记】22_ajax:异步校验用户名和站内查询
Js原生Ajax和Jquery的Ajax 学习目标 案例1-异步校验用户名是否存在 案例2-站内查询 一.Ajax概述 1.什么是同步,什么是异步 同步现象:客户端发送请求到服务器端,当服务器返回响应 ...
- libevent的作用或者说是有哪些功能
1. 介绍 libevent是一个用来开发可扩展的网络服务器的事件通知函数库.当一个文件描述符上的特定事件发生或是一个超时时间到达后,libevent API提供一种执行回调函数的机制.而且,libe ...
- [webpack] devtool里的7种SourceMap[转]
modle: development cheap-source-map debug 不太方便,不是以原来的文件的形式cheap-module-source-map 可以 debugcheap-modu ...
- bzoj 1468
大概思路:树点分治,重心树中每个重心维护一个总的平衡树,树中保存属于该重心的点到该重心的距离,然后对于去掉该重心后形成的子树分别再保存一份. 用这种方式实现的话,还可以支持修改与多次查询,每次操作都是 ...
- Mac下配置Idea的Maven
环境版本: Mac OS: 10.13.4 JDK: 1.8 Idea: 2018.3 Maven: 3.6.0 Maven 相关配置: Maven 下载: http://maven.apache.o ...
- ACM -- 算法小结(六)逆波兰表达式
逆波兰表达式 //问题描述:逆波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2+3的 //逆波兰表达式法为+ 2 3.逆波兰表达式的优点是运算符之间不必有优先级关系,也不必 //用括号改 ...
- Rails -- 关于Migration
Rails -- 关于Migration 无聊去逛博客,发现一篇介绍Migration,挺详细的,留个链接,以后需要的时候看. 链接: http://www.cnblogs.com/orez88/ar ...
- jquery加载解析XML文件
xml文件 <?xml version="1.0" encoding="utf-8" ?> <taxrates> <taxrate ...
- ROS知识(1)----ROS Jade安装
ROS入门难,进去之后会是很简单,这是很多人的经验.但是今天安装ROS就吃了闭门羹,安装成功后,回顾发现,关键是操作系统Ubantu14.04没有安装好,一些系统包没有及时更新导致的.这里总结下ROS ...
- [转译] AD RMS 安装最佳实践
在安装活动目录权限管理服务(ADRMS)时,请牢记以下几点: 将 AD RMS服务单独安装在一台服务器上——将 AD RMS与域控制器.微软邮件服务器(Microsoft Exchange Serve ...