资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

关于vb点虐 开发视觉软件的信息

机器视觉检测系统编程用的什么语言

一般二次开发用vb点虐 或者c#即可,如果想要自己写算法做开发,或者定制现有的算法,建议使用C++

石屏网站建设公司创新互联,石屏网站设计制作,有大型网站制作公司丰富经验。已为石屏近千家提供企业网站建设服务。企业网站搭建\成都外贸网站建设要多少钱,请找那个售后服务好的石屏做网站的公司定做!

VB点虐 可以开发小型3D图形显示软件吗?

可以借助DirectX来编程。免费3D引擎可不好找,一般来说速度比不上硬件加速后的DX,尤其令人头疼的是一般都没有针对VB的文档,LZ有这方面理想的话,自己写一个吧……

我不得不承认在VB上写DirectX的教程相当难找!如果LZ想深入研究三维图形问题,C++一定要学,就算不能用C++编程,起码要能把C++程序翻译成VB程序。

我自己学会DX编程花了两三个月(很浅)。编这样一个程序难度是有点大的。

工具:DirectX9和其针对VB的库(项目-添加引用。.NET库里DX库一般都有),VB不知道现在支不支持DX10以上的版本,不过9绝对够用了。

思路:一切3D图形都是由三角形拼成的。矩形挖掉一个圆孔可不是一个方便画的图形,我估计至少得有24个三角形。你需要记录这些点的坐标,或者干脆把它们写在文件里,到时读出来。

这是我的一个老DX程序的不完全的代码(显示一个黑乎乎的平面),不一定能编译,可以参考一下。

Imports Microsoft.DirectX '一定要~

Public Class FormMain

'Direct3D Startup

Dim d3dpp As New Direct3D.PresentParameters 'DX基本参数,例如全屏还是窗口等

Public MyDevice As Direct3D.Device ‘DX基本设备,画图就靠它。

'Matrices

Dim matWorld, matView, matProj As Matrix '世界位置矩阵,摄像机位置矩阵和透视矩阵,数学要学好啊。

'mesh

Public MyPlane as Direct3D.Mesh ’我们的物体

Public VBPlane(3) As Direct3D.CustomVertex.PositionNormalTextured '存放顶点位置的数组

#Region "DX Core"

Public Sub InitDeviceObjects()

With d3dpp ‘以下请照抄。

.Windowed = True ‘不全屏。

.SwapEffect = Direct3D.SwapEffect.Discard ’双缓冲交换效果。请百度“双缓冲”

.BackBufferFormat = Direct3D.Format.Unknown

.EnableAutoDepthStencil = True ’让DX自动管理深度缓冲

.AutoDepthStencilFormat = Direct3D.DepthFormat.D16

End With

MyDevice = New Direct3D.Device(0, Direct3D.DeviceType.Hardware, Me.Handle, Direct3D.CreateFlags.HardwareVertexProcessing, d3dpp) '创建DX设备啦!以下两句请照抄。

MyDevice.SetRenderState(Direct3D.RenderStates.ZEnable, True) ‘Z缓冲

MyDevice.SetRenderState(Direct3D.RenderStates.NormalizeNormals, True)'法线归一化,请看相关数学书籍。

End Sub

Public Sub RestoreDeviceObjects()

Dim PlaneIB() As Short = {0, 1, 3, 0, 2, 3} ’顶点索引信息。

Dim AttrTable(1) As Direct3D.AttributeRange ‘顶点分组属性表

AttrTable(0).AttributeId = 0

AttrTable(0).FaceStart = 0

AttrTable(0).FaceCount = 2 ’有两个三角形

AttrTable(0).VertexStart = 0

AttrTable(0).VertexCount = 4 ‘四个点

‘顶点坐标信息。

VBPlane(0) = New Direct3D.CustomVertex.PositionNormalTextured(-500, -500, 0, 0, 0, 1, 0, 0)

VBPlane(1) = New Direct3D.CustomVertex.PositionNormalTextured(500, -500, 0, 0, 0, 1, 1, 0)

VBPlane(2) = New Direct3D.CustomVertex.PositionNormalTextured(-500, 500, 0, 0, 0, 1, 0, 1)

VBPlane(3) = New Direct3D.CustomVertex.PositionNormalTextured(500, 500, 0, 0, 0, 1, 1, 1)

MyPlane = New Direct3D.Mesh(2, 4, Direct3D.MeshFlags.Managed, Direct3D.VertexFormats.Position + Direct3D.VertexFormats.Normal + Direct3D.VertexFormats.Texture1, MyDevice) ’创建物体

MyPlane.SetVertexBufferData(VBPlane, Direct3D.LockFlags.None) ‘输入顶点坐标数据

MyPlane.SetIndexBufferData(PlaneIB, Direct3D.LockFlags.None) ‘输入索引数据

MyPlane.SetAttributeTable(AttrTable) ‘输入顶点分组属性表

End Sub

Public Sub Render() ‘调用它画图

Dim vlook As New Vector3(1, 0, 0)

Dim vPos As New Vector3(0,0,0)

Dim vUp As New Vector3(0, 0, 1)

MatView = Matrix.LookAtLH(vPos, vlook, vUp) ‘计算摄像机位置矩阵

Device.SetTransform(Direct3D.TransformType.View, MatView) ‘设置当前摄像机位置矩阵为MatView。

Dim fAspect As Single = Me.Width / Me.Height ’窗口长宽比

matProj = Matrix.PerspectiveFovLH(Math.PI / 4, fAspect, 1.0F, 10001) ‘计算透视矩阵MatProj。

MyDevice.SetTransform(Direct3D.TransformType.Projection, matProj) ‘设置当前透视矩阵为MatProj。

MyDevice.Clear(Direct3D.ClearFlags.Target + Direct3D.ClearFlags.ZBuffer, Color.Blue, 1.0F, 0) ’先刷蓝屏

MyDevice.BeginScene() ‘开始画

MatWorld = Matrix.Identity ’物体位于原点,不旋转

Device.SetTransform(Direct3D.TransformType.World, MatWorld) ’设置物体位置

Me.Mesh.DrawSubset(0) ‘画物体

MyDevice.EndScene() ’结束

MyDevice.Present() ‘显示在屏幕上

End Sub

Public Sub DeleteDeviceObjects() ’结束程序时放掉资源

MyPlane.Dispose()

MyDevice.Dispose()

End Sub

#End Region

Private Sub FormMain_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing

DeleteDeviceObjects()

Windows.Forms.Cursor.Show()

End Sub

Private Sub FormMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

InitDeviceObjects()

RestoreDeviceObjects()

Windows.Forms.Cursor.Hide()

Render()

End Sub

End Class

康耐视视觉系统添加工具要改脚本吗?

Visionpro 软件是一款非常好用的机器视觉软件,它降低了开发人员的入门门槛,一个简单的机器视觉项目,只需要拖拉窗口,设定下参数,就可以立刻完成部署上线,开发效率是非常高的。

但这种模式也会降低开发的灵活性,值得高兴的是Visionpro也帮我们考虑到了这点,可以通过VisionPro脚本来拓展我们需要的功能,该脚本可以由C#或者VB.NET来编写,无需再学习新的编程语言。这样使得Visonpro开发机器视觉项目变得更加高效和灵活。下面我么就来介绍一下VisionPro脚本的使用方式。

1.VisionPro脚本的目的

VisionPro脚本主要是用来辅助QuickBuild工程,灵活拓展QuickBuild工程应用。它通常与VisionPro代码一起或者代替VisionPro代码来运行。

2.什么情况下使用脚本

1.QuickBuild和应用程序向导不能实现你想要的功能的时候;

2.拓展QuickBuild和应用程序向导的功能。

3.VisionPro脚本分为:作业脚本,工具组脚本,工具块脚本;

1.作业脚本

(1.)作业脚本用途

通过作业脚本,我们可以访问作业属性,对图像采集参数进行设置和控制图像采集过程。

(2.)如何进入图像脚本编程界面

1.打开作业

2.点击配置-作业属性-编辑脚本

这里有C#和VB.Net脚本可以供选择,可以根据自己专长来选择,案例中我们都以c#为首选语言。

3.选择C#脚本,进入编译区域

2.工具组脚本

(1.)工具组脚本用途

控制工具组里工具的执行顺序,拓展工具无法实现的功能。

(2.)如何进入工具组脚本编程界面

1.打开作业

2.点击创建-编辑脚本工具-C#脚本

3.工具块脚本

(1.)工具块脚本用途

可以将多个工具封装成一个工具块,该工具块具有特殊功能和自定义的输入输出端口,同时工具块可以被其它程序复用。

(2.)如何进入工具组脚本编程界面

1.打开作业

2.进入作业-添加工具块工具

3.进入工具块-添加c#脚本-进入脚本编译区域

这里有C#和VB.NET两种脚本语言,同时每种脚本又有简单和高级两种脚本。

工具块(ToolBlock)脚本结构和工具组(ToolGroup)脚本结构大致一致,这里就不在复述了,可以参考工具组脚本结构学习。

vb可以用来做机器视觉开发吗

VB是可以的。例如常规,像素RGB范围匹配模式,二值化对比模式也都是仅仅数十行代码可以实现。当然一些高级的工件自由检测,如指纹算法模式,非基准轮廓对比等就是看自己的VB功力了。

首先,硬件方面

1、相机最好要支持VB6的SDK开发包,这样事半功倍;

2、如果检测环境无法做防干扰屏蔽罩时,必须选用窄通红外相机配合红外光源,一般透光波长选择800·900纳米范围,缺点是这样的相机只有灰度图像;

3、检测误报率与环境光源干扰、信噪比、曝光稳定性、白平衡等有重要关系;

4、检测响应速度与相机帧率、相机像素大小、控制器CPU、上位机计算程序代码写法有关;

5、如果被检查工件之间的颜色差异非常明显如黑与白,蓝与黄,红与绿且检测精度要求低或仅检测有无,则可以选择低端的普通摄像头、一般的白光光源。但最好要防干扰屏蔽罩;

6、相机的I/O触发可有可无,一般通过软触发。因此要配一块串口通讯的单片机,根据实际检测功能配置合适的输入和输出点数,其作用是上位机控制相机和外接其它功能设备。土豪当然也可以直接用PLC。

7、软件基本逻辑是,上位机软件触发相机拍照,程序将照片二值化处理或轮廓提取,分析与基准图像的差异并作出判断。I/O卡输出信号控制其它外接设备工作。

检测分为,ROI匹配或全图匹配。ROI匹配即通过VB上位机软件设定,只检测需要检测的部分,大大减少CPU计算量,提升检测响应速度。全图匹配,不建议使用,不但误报高,而且吃CPU。

希望这些信息可以帮到你。


网站栏目:关于vb点虐 开发视觉软件的信息
网页地址:http://www.cdkjz.cn/article/ddisjsh.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220