news 2026/7/13 12:19:29

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/7/13 7:13:26

论文相似度过高?五个实用技巧帮你高效优化文本内容

科学研究证实&#xff0c;全球变暖与极端气候事件频发具有显著关联性&#xff0c;量化分析显示环境温度升高会直接导致异常天气现象发生概率大幅提升。 首先&#xff0c;咱们聊聊人工降重的基本功 根据最新调研数据&#xff0c;近年来人工智能技术呈现出迅猛的发展态势&#…

作者头像 李华
网站建设 2026/7/11 21:47:44

学术研究加速器:9款AI写作工具从初稿到终稿实测

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

作者头像 李华
网站建设 2026/7/11 18:17:16

强烈安利!10款AI论文平台测评,本科生毕业论文必备

强烈安利&#xff01;10款AI论文平台测评&#xff0c;本科生毕业论文必备 2026年AI论文平台测评&#xff1a;为何值得一看&#xff1f; 随着人工智能技术的不断进步&#xff0c;AI论文平台逐渐成为本科生撰写毕业论文的重要辅助工具。然而&#xff0c;面对市场上琳琅满目的选择…

作者头像 李华
网站建设 2026/7/10 18:33:44

9大AI写作工具横向对比:覆盖学术论文全周期的高效解决方案

学术论文写作中&#xff0c;开题报告与正文撰写往往面临效率挑战。相比传统人工写作的灵活性优势&#xff0c;AI技术显著提升了文本生成速度、重复率管理和逻辑结构优化能力。研究表明&#xff0c;通过对9类主流智能写作平台的评估&#xff0c;合理使用AI工具可提升学术创作效率…

作者头像 李华
网站建设 2026/7/11 12:25:16

深度测评10个AI论文写作软件,助本科生轻松搞定论文!

深度测评10个AI论文写作软件&#xff0c;助本科生轻松搞定论文&#xff01; 1.「千笔」—— 一站式学术支持“专家”&#xff0c;从初稿到降重一步到位&#xff08;推荐指数&#xff1a;★★★★★&#xff09; 在众多AI论文写作工具中&#xff0c;「千笔」无疑是一款备受推崇的…

作者头像 李华
网站建设 2026/7/11 18:21:36

提示工程架构实战:小样本场景下的模型压缩方案

提示工程架构实战:小样本场景下的模型压缩方案设计与落地 摘要/引言:小样本时代,我们需要怎样的模型压缩? 你有没有遇到过这样的困境? 为了做一个移动端的图像分类应用,你选了轻量级模型ViT-Tiny,但用5张图/类的小样本数据训练后,准确率勉强到70%;想再压缩模型大小(…

作者头像 李华