news 2026/4/3 7:33:50

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/17 3:33:55

C++语音技术

C语音技术文章大纲1. 引言语音技术在软件开发中的重要性C在语音处理中的优势&#xff08;高性能、低延迟&#xff09;应用场景&#xff08;语音识别、合成、实时通信&#xff09;2. 语音技术基础语音信号处理的基本概念&#xff08;采样率、频谱分析&#xff09;常见语音任务&a…

作者头像 李华
网站建设 2026/3/30 23:00:08

学霸同款2026 AI论文写作软件TOP10:MBA毕业论文全场景测评

学霸同款2026 AI论文写作软件TOP10&#xff1a;MBA毕业论文全场景测评 2026年MBA论文写作工具测评&#xff1a;功能与体验的深度解析 随着人工智能技术在学术领域的广泛应用&#xff0c;AI论文写作软件已成为MBA学生提升效率、优化内容质量的重要工具。然而&#xff0c;面对市场…

作者头像 李华
网站建设 2026/4/3 4:29:27

提示工程×知识图谱:架构师如何用它让AI应用未来更“博学”

提示工程知识图谱&#xff1a;架构师如何用它让AI应用未来更“博学” 一、引入与连接&#xff1a;当AI遇到“枸杞补肾”的灵魂拷问 清晨的咖啡桌上&#xff0c;同事小张举着保温杯问我&#xff1a;“你说这枸杞真能补肾吗&#xff1f;为什么中医说‘入肾经’&#xff0c;西医…

作者头像 李华
网站建设 2026/3/26 16:34:38

node.js基于vue的鲜花销售团购秒杀系统_0000t67h_

文章目录系统概述核心功能技术亮点应用场景项目技术介绍开发工具和技术简介nodejs类核心代码部分展示结论源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系统概述 Node.js与Vue.js结合的鲜花销售团购秒杀系统是一个高性能的电商平台&a…

作者头像 李华