让代码更简单

C#与visionPro工业视觉教程——C#显示相机实时画面

重要:本文最后更新于2019-12-11 14:53:45,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

相机不仅能拍照,还能录视频,相信大家用过手机的都应该知道,前面我们学习了拍照已经各种视觉工具的使用,今天我们来实现相机实时画面显示在C#程序中,学习这篇C#与visionPro教程相机实时画面显示文章,或许有助于理解相机如何与程序连接。

有人可能觉得这个功能有点多余,但在实际应用中,如果在程序中加入显示相机实时画面的功能,会给现场调机人员提供很大的帮助与方便。

效果图

代码狗工业视觉C#与visionPro教程相机实时画面显示

代码狗工业视觉C#与visionPro教程相机实时画面显示

实现代码如下:


隐藏内容,解锁需要开通VIP
登录/注册

使用康耐视vision Pro 64位的类库需要注意,可能你的程序会莫名奇妙报错,请将构建环境换成X64,默认使用的是X32。

欢迎关注代码狗博客,更多工业视觉教程等你来学。

感谢网友提供的报错问题,已经修正教程!

感觉很棒!可以赞赏支持我哟~

49 打赏
感谢 1人打赏10元

评论 (78)

登录后评论
不知道为啥,关闭窗口的时候就会报RunTime Error!,,,gbm2.Disconnect(true);这句代码感觉加在哪里都会报错
应该不会吧,我测试过的。
源码在哪里
想看下SDK采集的图像怎么转换成visionPro里面的图像类型,然后怎么拿来使用
看你图像是什么类型的,如果visionpro不能直接使用,可以通过visionpro的图像转换工具转换
注册了 CogAcqFifoTool 对象 mAcq.operator.complete 事件(相机硬件触发),在程序关闭的时候就要报错:Runtime Error! R6025-pure virtual function call. 有什么好办法可以解决吗?
关闭前将TriggerEnabled改回false试试
多谢狗哥最后那句话,开调试32位,老报错,看到最后才发现要64位~~
狗哥,能详细说明下ICogRecord是什么?,什么情况下可以使用它们
忙完了就说。
我是win10,64位,专业版的系统
版主我是在这一行报错:
if (mframe.Count < 1)
报错内容:对象的当前状态使该操作无效。
这个该怎么解决啊?
vs中调整项目架构为X64
问题解决,多谢!!!
版主你好,我用了个彩色相机,是AVT的,在按钮2执行时会报错,报错的代码行是mAcqFifo2=gbm2.CreateAcqFifo(gbm2.AvailableVideoFormats[0],CogAcqFifoPixelFormatConstants.Format32RGB,0,true);相机的格式是Bayer Color格式的
报错内容呢?
OK了,是我相机的驱动没弄好
发现只要执行gbm2.AvailableVideoFormats[0] 或者 gbm2.CreateAcqFifo ( gbm2.AvailableVideoFormats[0],
CogAcqFifoPixelFormatConstants.Format8Grey, 0, true )

在程序关闭的时候就要报错:Runtime Error! R6025-pure virtual function call
在窗口关闭事件中执行关闭实时画面方法
窗体关闭,我调用了StopLiveDisplay();还是会报错
报什么错?
窗体关闭,我调用了StopLiveDisplay();还是会报错。还是报,Runtime Error! R6025-pure virtual function call。
感谢提供报错信息,教程已修正!
cogRecordDisplay1.StartLiveDisplay ( mAcqFifo2, false );//控件绑定相机并显示画面
这句代码中cogRecordDisplay1 上文未声明,程序出错
cogRecordDisplay1是UI控件,从工具箱中拖一个到你的窗口上。
请问这是连接的康耐视的相机嘛?我用的Basler相机,引用了PylonC.NET。但是运行显示: 无法加载 DLL“PylonC_MD_VC120_v5_0.dll”: 找不到指定的模块。 是因为缺少dll文件吗,这个dll文件从哪能下载呢?
康耐视的相机和巴勒斯的相机都可以的,visionPro都支持,SDK没试过。
请问你遇到的问题,后来有解决吗?如何解决?谢谢!
请问相机可以是笔记本电脑自带的摄像头嘛,相机有什么要求吗?
visionPro不能用笔记本的摄像头,相机一般需要jr45接口(网口)
学习中...
您好我在试着抓图的时候总是提示这个错误:在 Cognex.VisionPro.Exceptions.CogAcqAbnormalException 中第一次偶然出现的“Cognex.VisionPro.FGGigE.dll”类型的异常
线程 '' (0x4bd8) 已退出,返回值为 0 (0x0)。
“TriggerMode.vshost.exe”(托管(v4.0.30319)): 已加载“C:\WINDOWS\Microsoft.Net\assembly\GAC_64\Cognex.VisionPro.CorePlus\v4.0_53.2.0.0__ef0f902af9dee505\Cognex.VisionPro.CorePlus.dll”
在 Cognex.VisionPro.Exceptions.CogAcqAbnormalException 中第一次偶然出现的“Cognex.VisionPro.FGGigE.dll”类型的异常
安装的visionpro是否与系统位数一致,编译是否有提示dll架构与处理器架构不一致,不一致选择x64
CogFrameGrabberGigEs 这是哪一个引用集?
Cognex.VisionPro;
这个引用集加进去了 还是报错啊
引用Cognex.VisionPro.FGGigE这个支持库,然后using Cognex.VisionPro.FGGigE;
我有两个程序代码一样,一个可找到相机,另外一个死活找不到,是哪里设置有问题吗
程序架构选X64
多多更新visionpro
最近比较忙,有空我会更新的
visionpro都有哪些类,分别有什么作用, 请问哪里可以查看到? 现在是看到别人有用的才知道有这个类
visionpro有接口说明文档哟,在开始菜单那里。
if (mframe.Count < 1) 这里报错是因为64位的原因,已经解决。
我这里没有连接任何相机的情况下,ICogFrameGrabber gbm2 = mfr2[0]这句报错。
未处理ArgumentOutOfRangeException 指定的参数已超出有效值的范围。
报错是因为相机列表里没有,取不到的原因吗?
按照你所说的错误,属于超出数组界限,使用mfr.length()查看数组长度,看看有没有内容。
没有连接相机是没有相机列表的,所有你这里应该是取不到相机,相机列表数组里是空的,你又使用了相机数组里的第一个元素,所以才报错的。
请问 if (mframe.Count < 1) 这里报错,怎么解决的
报的什么错,我贴的代码都是成功运行的程序复制下来的。
“System.InvalidOperationException”类型的未经处理的异常在 Cognex.VisionPro.FGGigE.dll 中发生

其他信息: 对象的当前状态使该操作无效。
这个是因为该链接库DLL必须使用64位编译,用32位编译就会报错。在vs里右键项目——属性——生成——目标平台改为X64就好了。
if (mframe.Count < 1) 这里报错,未处理InvalidOperationException 对象的当前状态使该操作无效。请问会是什么原因引起的,我这里没有连接任何相机。
我正在学习c#+visionpro,期待新教程不断更新!
有时间我就会更新的,有不懂的地方可以留言哟,我看到会回的。
有没有一套完整的开发代码学习下
QQ咨询 邮件咨询 狗哥推荐