news 2026/3/11 4:38:36

VisionPro二开之相机类设计

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
VisionPro二开之相机类设计

VisionPro二开之相机类设计

一 CameraService

usingCognex.VisionPro;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;namespaceVP之相机调试2{publicclassCameraService{//1. 私有静态变量(在第四步供外界使用),创建类的实例//2. 私有构造函数,确保外部无法直接实例化(确保是单个实例)//3. 确定供外界调用的代码资源//4. 公开静态属性,供外界使用(把第一步类的实例,开放出去)//5. 外界使用//1. 创建类的实例,同时变成私有的静态变量(在第四步供外界使用),privatestaticCameraServiceinstance=newCameraService();//2. 私有构造函数,确保外部无法直接实例化(确保是单个实例)privateCameraService(){}//4. 公开静态属性,供外界使用(把第一步类的实例,开放出去)publicstaticCameraServiceInstance{get{returninstance;}}//3. 确定供外界调用的代码资源VPCameraCamera1=newVPCamera();/// <summary>/// 打开相机/// </summary>/// <param name="SerialNum"></param>/// <returns></returns>publicboolOpenDevice(stringSerialNum){Camera1.grabGrayImage+=GrabImage;Camera1.SerialNumber=SerialNum;if(Camera1.OpenDevice()){returntrue;}else{returnfalse;}}/// <summary>/// 关闭设备/// </summary>publicvoidCloseDevice(){Camera1.CloseDevice();}/// <summary>/// 开始采集/// </summary>publicvoidStartGrab(){}/// <summary>/// 停止采集/// </summary>publicvoidStopGrab(){}/// <summary>/// 软触发一次/// </summary>publicvoidSnapImage(){Camera1.SnapImage();}/// <summary>/// 设置参数/// </summary>publicvoidSetCameraParamters(){}/// <summary>/// 获取参数/// </summary>publicvoidGetCametaParamters(){}/// <summary>/// 获取图像(图像回调)/// </summary>/// <param name="hImg"></param>publicvoidGrabImage(CogImage8Greyimg){varmainForm=Application.OpenForms.OfType<Form1>().FirstOrDefault();mainForm.cogRecordDisplay1.Image=img;mainForm.cogRecordDisplay1.Fit(true);}}}

二 VPCamera

一 打开相机

/// <summary>/// 打开相机/// </summary>/// <returns></returns>publicboolOpenDevice(){if(frameGrabbers.Count>0){try{foreach(ICogFrameGrabbercamerainframeGrabbers){if(camera.SerialNumber==SerialNumber){frameGrabber=camera;m_AcFifo=frameGrabber.CreateAcqFifo(frameGrabber.AvailableVideoFormats[0],CogAcqFifoPixelFormatConstants.Format8Grey,0,true);}}}catch(Exceptionex){MessageBox.Show($"初始化相机失败,信息为:{ex.Message}");returnfalse;}}returntrue;}
publicclassVPCamera{publicvoidCloseDevice(){//释放相机CogFrameGrabbersFrameGrabbers=newCogFrameGrabbers();foreach(ICogFrameGrabberfginFrameGrabbers){fg.Disconnect(false);}}}
usingCognex.VisionPro;usingCognex.VisionPro.Display;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Runtime.InteropServices;usingSystem.Text;usingSystem.Threading;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;usingSystem.Windows.Media.Media3D;namespaceVP之相机调试2{/// <summary>/// 传图委托(灰度图)/// </summary>/// <param name="GrayImg"></param>publicdelegatevoidGrabGrayImage(CogImage8GreyGrayImg);/// <summary>/// 传图委托(彩色图)/// </summary>/// <param name="RGBImg"></param>publicdelegatevoidGrabRGBImage(CogImage24PlanarColorRGBImg);publicclassVPCamera{/// <summary>/// 传灰度图事件/// </summary>publiceventGrabGrayImagegrabGrayImage;/// <summary>/// 传彩图事件/// </summary>publiceventGrabRGBImagegrabRGBImage;/// <summary>/// 相机枚举类,获取所有的相机/// </summary>privateCogFrameGrabbersframeGrabbers;// 相机对象privateICogFrameGrabberframeGrabber;/// <summary>/// 采集对象/// </summary>publicICogAcqFifom_AcFifo{get;set;}/// <summary>/// 相机序列号/// </summary>publicstringSerialNumber{get;set;}/// <summary>/// 构造器/// </summary>publicVPCamera(){frameGrabbers=newCogFrameGrabbers();}/// <summary>/// 打开相机/// </summary>/// <returns></returns>publicboolOpenDevice(){if(frameGrabbers.Count>0){try{foreach(ICogFrameGrabbercamerainframeGrabbers){if(camera.SerialNumber==SerialNumber){frameGrabber=camera;m_AcFifo=frameGrabber.CreateAcqFifo(frameGrabber.AvailableVideoFormats[0],CogAcqFifoPixelFormatConstants.Format8Grey,0,true);}}}catch(Exceptionex){MessageBox.Show($"初始化相机失败,信息为:{ex.Message}");returnfalse;}}returntrue;}publicvoidSnapImage(){try{// 获取采集状态// 如果值 > 0,表示有图像堆积,可能需调整采集速率或处理速度。// 当前 FIFO 中可立即读取的图像数量(已就绪的图像)。// 布尔值,表示 FIFO 是否正在处理采集请求 true 时需等待,避免重复触发m_AcFifo.GetFifoState(outvarnumPending,outvarnumReady,outvarbusy);if(numPending==0&&!busy){// 软触发:作用:向 FIFO 发送软触发信号,开始一次图像采集(相当于手动触发相机拍照)。m_AcFifo.StartAcquire();// 等待采集完成,并返回采集到的图像ICogImagecogImage=m_AcFifo.CompleteAcquireEx(newCogAcqInfo());grabGrayImage((CogImage8Grey)cogImage);// grabRGBImage((CogImage24PlanarColor)cogImage);}}catch(Exceptionex){MessageBox.Show($"采集异常,信息为:{ex.Message}");}}/// <summary>/// 关闭所有相机/// </summary>publicvoidCloseDevice(){//释放相机CogFrameGrabbersFrameGrabbers=newCogFrameGrabbers();foreach(ICogFrameGrabberfginFrameGrabbers){fg.Disconnect(false);}}}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/9 9:41:09

提升论文原创性的有效方法:六款AI工具改写文本的实用操作指南

排名 工具/方法 核心优势 适用场景 1 aibiye 智能降重学术语言优化 初稿完成后深度润色 2 aicheck 多维度查重选题辅助 全程论文质量监控 3 秒篇 一键生成逻辑结构优化 紧急补论文初稿 4 AskPaper 文献解析重点提炼 文献综述与理论支撑 5 知网人工降重 专…

作者头像 李华
网站建设 2026/3/10 15:39:23

学术查重未通过?五个关键方法帮你快速降低重复比例。

最新研究数据揭示&#xff0c;全球气温上升与极端气候事件发生频率上升之间存在明确的因果关系&#xff0c;这一发现通过科学验证表明环境温度变化会直接引发更为频繁的异常天气模式。 首先&#xff0c;咱们聊聊人工降重的基本功 根据最新调研数据&#xff0c;近年来人工智能…

作者头像 李华
网站建设 2026/3/8 2:19:10

亲测好用9个AI论文软件,助你搞定研究生毕业论文!

亲测好用9个AI论文软件&#xff0c;助你搞定研究生毕业论文&#xff01; AI 工具如何改变论文写作的效率 在研究生阶段&#xff0c;论文写作往往是一项既耗时又复杂的任务。从选题、开题到撰写、修改&#xff0c;每一个环节都需要大量的时间和精力。而随着 AI 技术的发展&#…

作者头像 李华
网站建设 2026/3/10 22:57:44

论文查重不合格?五个高效步骤帮你快速调整文本。

最新研究数据揭示&#xff0c;全球气温上升与极端气候事件发生频率上升之间存在明确的因果关系&#xff0c;这一发现通过科学验证表明环境温度变化会直接引发更为频繁的异常天气模式。 首先&#xff0c;咱们聊聊人工降重的基本功 根据最新调研数据&#xff0c;近年来人工智能…

作者头像 李华
网站建设 2026/3/10 16:22:37

AO3镜像站终极部署指南:3步实现稳定访问同人作品库

AO3镜像站终极部署指南&#xff1a;3步实现稳定访问同人作品库 【免费下载链接】AO3-Mirror-Site 项目地址: https://gitcode.com/gh_mirrors/ao/AO3-Mirror-Site AO3镜像站作为专为国内同人爱好者设计的开源解决方案&#xff0c;通过智能同步技术有效解决了访问受限问…

作者头像 李华
网站建设 2026/3/9 2:03:03

论文写作效率翻倍:9款AI辅助工具深度体验评测

在学术论文撰写过程中&#xff0c;开题报告与正文的高效完成是研究者常见的难题。传统人工撰写模式虽然灵活性较高&#xff0c;但存在效率瓶颈&#xff0c;而现代人工智能技术能够实现内容的快速生成、重复率控制以及文本逻辑优化。实验数据显示&#xff0c;对9种主流智能写作平…

作者头像 李华