当前位置: 首页 > news >正文

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);}}}}
http://www.jsqmd.com/news/226529/

相关文章:

  • 查重比例超标?五个实用技巧帮你快速优化论文内容。
  • 论文重复率过高?五种有效策略助你轻松调整文本结构。
  • 数据服务熔断机制在大数据平台中的实现
  • 如何处理Java自定义控件与Compose状态的联动?
  • 学霸同款2026 AI论文工具TOP9:本科生毕业论文写作全攻略
  • C++语音技术
  • 重复率超过30%?运用这些技巧,让你的论文轻松达标。
  • 导师不会说的7款AI论文神器,30分钟生成5万字查重无忧!
  • 论文相似度过高?五个实用技巧帮你高效优化文本内容
  • 重复率高于30%?五种科学策略助你轻松达标学术规范。
  • 论文查重率超过30%?掌握这五个关键方法,快速降低重复比例。
  • 亲测好用9个AI论文软件,助你搞定研究生毕业论文!
  • 相似度高于30%?五种科学改写方法助你符合学术要求。
  • 学术查重未通过?五个关键方法帮你快速降低重复比例。
  • 查重结果超过30%?运用这些方法,快速提升论文原创性。
  • 学术论文重复率不达标?五种有效方案助你顺利通过检测。
  • 重复率超出30%?五个专业策略让你轻松降低相似度。
  • 论文查重不合格?五个高效步骤帮你快速调整文本。
  • 智能时代的学术写作:9款AI工具全周期效能评测
  • AO3镜像站终极部署指南:3步实现稳定访问同人作品库
  • 学术写作革命:深度测评9款AI助手如何提升论文效率
  • 从开题到定稿:9款AI学术写作工具性能全面解析
  • 从开题到定稿:9款AI学术写作工具性能全面解析
  • AI助力学术研究:9款工具全流程评测从选题到论文终稿
  • AI如何改变学术写作?9款工具全流程实测报告
  • 突破写作瓶颈:9款AI学术助手全流程功能对比分析
  • 科研人员必备:2023年9款AI论文写作工具权威测评
  • 论文写作效率翻倍:9款AI辅助工具深度体验评测
  • 论文生产力升级:9款AI写作辅助工具深度横评
  • 学霸同款2026 AI论文写作软件TOP10:MBA毕业论文全场景测评