机器视觉_联合编程(二)
链接相机,加载tb,检测
FrameGrabber链接相机拍照
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Cognex.VisionPro;namespace _02_FrameGrabber链接相机拍照
{public partial class Form1 : Form{public Form1(){InitializeComponent();}ICogFrameGrabber mGrabber=null;ICogAcqFifo mFifo = null;private void Form1_Load(object sender, EventArgs e){Inital();}//定义加载相机的方法private void Inital(){//获取到所有的已经连接的相机(集合)CogFrameGrabbers cogFrame = new CogFrameGrabbers();if (cogFrame.Count<1){MessageBox.Show("连接失败");}//遍历集合 取出相机foreach (ICogFrameGrabber item in cogFrame){mGrabber =item;//创建采集图像接口//参数1:图像类型//参数2:像素类型mFifo= item.CreateAcqFifo("Generic GigEVision (Mono)",CogAcqFifoPixelFormatConstants.Format8Grey,0,true);//采图完成 之后 自动调用一个事件处理函数mFifo.Complete += mAcq_com;}}private void mAcq_com(object sender,CogCompleteEventArgs e ){int NumReady, numPending;bool busy;try{//定义 图像类型 和 接口CogImage8Grey image =new CogImage8Grey();CogAcqInfo info = new CogAcqInfo();//获取采集到的信息mFifo.GetFifoState(out NumReady,out numPending,out busy);//判断是否采集到图像信息if (numPending>0){//获取采集到的信息image = (CogImage8Grey)mFifo.CompleteAcquireEx(info);//显示图像信息cogRecordDisplay1.Image=image;cogRecordDisplay1.Fit();}}catch (Exception){}}//拍照private void button1_Click(object sender, EventArgs e){//调用接口拍照mFifo.StartAcquire();}}
}
设置曝光
//设置曝光private void button3_Click(object sender, EventArgs e){//手动设置的曝光的值int exps = Convert.ToInt32(textBox1.Text);//设置曝光mFifo.OwnedExposureParams.Exposure = exps;MessageBox.Show("曝光设置成功");}
释放相机
//释放相机private void release(){CogFrameGrabbers cogFrame = new CogFrameGrabbers();foreach (ICogFrameGrabber item in cogFrame){item.Disconnect(false);}}private void Form1_FormClosing(object sender, FormClosingEventArgs e){release();}
读取图片
方式一: CogImageFileTool
public ICogImage ReadImage1(){string path = @"E:\机器视觉16班\VisionPro\课件\15_ConnectCamera\01_联合编程\02_连接相机\bin\Debug\Image1\wuyifan.bmp";//实例化工具CogImageFileTool imgFileTool= new CogImageFileTool();//打开图像//参数1:图像的路径//参数2:图像的操作imgFileTool.Operator.Open(path, CogImageFileModeConstants.Read);//运行工具imgFileTool.Run();//返回工具输入的图像信息return imgFileTool.OutputImage;}
方式二: bitmap
public ICogImage ReadImage2(){string path = @"E:\机器视觉16班\VisionPro\课件\15_ConnectCamera\01_联合编程\02_连接相机\bin\Debug\Image1\20240507150110.bmp";Bitmap tmap = new Bitmap(path);ICogImage images = new CogImage24PlanarColor(tmap);return images;}
手动选择图片路径
private void button5_Click(object sender, EventArgs e){OpenFileDialog openFileDialog = new OpenFileDialog();openFileDialog.Filter = "(*.jpg;*.jpeg;*.gif;*.bmp;*.png)|*.jpg;*.jpeg;*.gif;*.bmp;*.png";openFileDialog.InitialDirectory = @"E:\";if (openFileDialog.ShowDialog() == DialogResult.OK){//获取手动选择的图像的路径string fileName =openFileDialog.FileName;Bitmap tmap = new Bitmap(fileName);ICogImage images = new CogImage24PlanarColor(tmap);cogRecordDisplay1.Image = images;}}
加载ToolBlock并运行工具
//1.private void LoadToolBock(){string path = Directory.GetCurrentDirectory() + @"\tb.vpp";tb = (CogToolBlock) CogSerializer.LoadObjectFromFile(path);}//2.private void button6_Click(object sender, EventArgs e){FormTB formTB = new FormTB(tb);formTB.Show();}
//3.
private void FormTB_Load(object sender, EventArgs e){cogToolBlockEditV21.Subject = mTB;}
检测获取结果
private void button7_Click(object sender, EventArgs e){if (tb != null){//把采集到的图像传入进tbtb.Inputs["OutputImage"].Value = mImage;tb.Run();//显示测量之后的图像cogRecordDisplay1.Record = tb.CreateLastRunRecord().SubRecords[0];cogRecordDisplay1.Fit();double MWidth =(double) tb.Outputs["MyWidth"].Value;label1.Text=MWidth.ToString();}}
总结
相机工具 : cogAcqFifoEditV21
想办法 把我们用 vispro 做好的 Vpp 赋值给 相机工具
从文件里面 加载对象 : CogSerializer.LoadObjectFromFile( 文件地址 );
声明一个相机类: CogAcqFifoTool
往winform 窗口里面的控件赋值 : winform里面的工具名.Subject = 文件里面加载出来的 对象加载相机 双击 winform 主窗口 来添加事件 直接加载相机 拍照 点击时 用一个控件显示
没有的话就是空 : 文件里面加载的对象.Operator
运行工具: .Run();
图像类型: ICogImage
展示的工具: cogRecordDisplay.Image 是展示工具要展示的图片释放相机 添加一个事件
窗口关闭事件: FormClosing 当关闭窗口时会触发的事件释放相机://也要判断一下相机是不是空的if (mAcq.Operator != null) {//.FrameGrabber 找到硬件 释放相机mAcq.Operator.FrameGrabber.Disconnect(false);}}//需要背的东西
工具:
相机工具 : cogAcqFifoEditV21
展示的工具: cogRecordDisplay.Image 是展示工具要展示的图片事件:
加载相机 双击 winform 主窗口 来添加事件 直接加载相机
点击事件
窗口关闭事件: FormClosing 当关闭窗口时会触发的事件函数:往winform 窗口里面的控件赋值 : winform里面的工具名.Subject = 文件里面加载出来的 对象
运行工具: .Run();
展示的工具: cogRecordDisplay.Image 是展示工具要展示的图片
图片百分比显示: 放图片的工具.Fit();
弹出提示框: MessageBox.Show("提示语句");
创建采集接口: 相机类型的接口.CreateAcqFifo("Generic GigEVision (Mono)", CogAcqFifoPixelFormatConstants.Format8Grey,0,true);
拿相机获取到的图像信息: 相机接口.CompleteAcquireEx(info) as CogImage8Grey;
加载文件中的vpp对象: (工具类型)CogSerializer.LoadObjectFromFile(文件地址);
释放相机: 相机接口.Disconnect(false);
接口拍照的方法: 相机类型接口.StartAcquire();
设置曝光: 相机类型接口.OwnedExposureParams.Exposure = 曝光数;
获取当前程序运行路径: Directory.GetCurrentDirectory()
判断文件夹是否存在: Directory.Exists(文件地址)
创建文件夹: Directory.CreateDirectory(文件夹地址);
bitmap类型保存图片: Bitmap bmp = 图片 as Bitmap;
保存图像: bmp.Save(文件地址,System.Drawing.Imaging.ImageFormat.图片类型(jpg,png....));
读取图片: (浅记)
CogImageFileTool imageFile = new CogImageFileTool();//.Operator.Open() 工具里面的方法 第一个是图片路径 第二个是图片格式//imageFile.Operator.Open(path,CogImageFileModeConstants.Read);//imageFile.Run();//return imageFile.OutputImage;
bitmap类读取图片: Bitmap bmp = new Bitmap(图片路径);
保存图像的格式: (需要一个图像类型) = new CogImage24PlanarColor(btm储存好的);
百分比显示适应图像: 显示图像的控件.Fit();
弹出窗口: 需要弹出的窗口.ShowDialog();
输入图片: 工具名字.Inputs["OutputImage"].Value = 图像;
把当前文件打包覆盖指定文件: CogSerializer.SaveObjectToFile(mTB,文件的完整路径);(需要手动创建路径)
添加事件完成时可直接跳转到事件中: 相机彩图完成后的相机接口.Complete +=事件名(自己起);
过滤文件类型: 文件对话框类.Filter
显示对话框: .ShowDialog()通过bitmap 类实现读取图片Bitmap bmp = new Bitmap(path);ICogImage image = new CogImage24PlanarColor(bmp); return image;
通过 工具类读取图片CogImageFileTool imageFile = new CogImageFileTool();//.Operator.Open() 工具里面的方法 第一个是图片路径 第二个是图片格式//imageFile.Operator.Open(path,CogImageFileModeConstants.Read);//imageFile.Run();//return imageFile.OutputImage;用到的类:
声明一个相机类: CogAcqFifoTool
图像类型: ICogImage
TookBlick类: CogToolBlick
连接的硬件设备类: ICogFrameGrabber
相机接口类: ICogAcqFifo
所有已连接的相机类 CogFrameGrabbers
文件对话框类: OpenFileDialog相关文章:
机器视觉_联合编程(二)
链接相机,加载tb,检测 FrameGrabber链接相机拍照 using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tas…...
AUTOCRAWLER : A Progressive Understanding Web Agent for WebCrawler Generation
AUTOCRAWLER:用于生成 WebCrawler 的渐进式理解 Web 代理 Fudan University;Alibaba Holding-Aicheng Technology-Enterprise Abstract: 网络自动化是一项重要技术,它通过自动化常见的网络操作来完成复杂的网络任务,提高效率并…...
php使用服务器端和客户端加密狗环境部署及使用记录(服务器端windows环境下部署、linux环境宝塔面板部署、客户端部署加密狗)
php使用服务器端和客户端加密狗环境部署及使用记录 ViKey加密狗环境部署1.windows环境下部署开发文档验证代码提示Fatal error: Class COM not found in 2.linux环境下部署(宝塔面板)开发文档验证代码提示Fatal error: Uncaught Error: Call to undefine…...
Android selinux权限
一.SE 概述 SELinux 是由美国NSA(国安局)和 SCC 开发的 Linux的一个扩张强制访问控制安全模块。原先是在Fluke上开发的,2000年以 GNU GPL 发布。从 fedora core 2开始, 2.6内核的版本都支持SELinux。 在 SELinux 出现之前&#…...
Flutter笔记:Widgets Easier组件库(9)使用弹窗
Flutter笔记 Widgets Easier组件库(9):使用弹窗 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress o…...
【解决Android Studio】cmake报错找不到vulkan包
1 报错信息 CMake Error at D:/Android/project/cmake/3.10.2.4988404/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:137 (message): Could NOT find Vulkan (missing: Vulkan_LIBRARY) Call Stack (most recent call first): 2. 错误原因 minSdk版本不对&am…...
手动卸载32 位office
首先通过控制面板或软件管家卸载office,控制面板没有显示出来,按照以下步骤处理: 1)删除残余文件 C:\Program Files\Microsoft Office C:\Program Files (x86)\Microsoft Office 2)删除残余注册表信息 计算机\HKEY_CL…...
python selenium 滑动后获取动态追加的元素
在使用Python的Selenium库进行网页自动化时,如果需要滑动页面并获取动态追加的元素,可以使用以下步骤: 使用Selenium定位到滑动条元素。 执行滑动操作,可以调用execute_script方法来模拟滑动。 使用WebDriverWait和expected_co…...
【idea-sprongboot项目】在linux服务器上纯远程开发方式
继上一篇博客【idea-sprongboot项目】SSH连接云服务器进行远程开发-CSDN博客 目录 五、远程开发方式 2)纯远程开发方式 步骤 五、远程开发方式 2)纯远程开发方式 实现原理, 步骤 (1)首先,关闭当前正在…...
ADC模-数转换原理与实现
1. 今日摸鱼计划 今天来学习一下ADC的原理,然后把ADC给实现 ADC芯片:ADC128S102 视频: 18A_基于SPI接口的ADC芯片功能和接口时序介绍_哔哩哔哩_bilibili 18B_使用线性序列机思路分析SPI接口的ADC芯片接口时序_哔哩哔哩_bilibili 18C_基于线性序列机的S…...
Android 文件传输
目录 device explorer 文件目录关系对应: device explorer 经常写adb命令传文件,结果发现Android studio有自带的文件管理器,可以上传下载文件。 tool windows ->device explorer 文件目录关系对应: Android java获取的程序…...
一起深度学习
CIFAR-10 卷积神经网络 下载数据集构建网络运行测试 下载数据集 batchsz 32cifar_train datasets.CIFAR10(data,trainTrue,transformtorchvision.transforms.Compose([torchvision.transforms.Resize((32,32)),torchvision.transforms.ToTensor()]),downloadTrue)cifar_train …...
servlet-会话(cookie与session)
servlet会话技术 会话技术cookie创建Cookieindex.jspCookieServlet 获取Cookieindex.jspshowCookie session创建sessionindex.jsplogin.jspLoginServlet 获取sessionRedurectServket 清除会话login.jspClearItmeServlet 会话技术 两种会话:cookie,sessi…...
windows11忘记登录密码怎么办?
STEP1:进入Win RE界面 1.按住shift不要松手,点击重新启动,进入WINRE界面 2.选择疑难解答 选择高级选项 点击命令提示符 STEP2:替换utilman 1.输入以下代码查看所在windows所在盘 diskpart list volume exit 2.根据所在盘输入命令(以C盘为…...
C#里如何设置输出路径,不要net7.0-windows
官网介绍: 更改生成输出目录 - Visual Studio (Windows) | Microsoft Learn <PropertyGroup> <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath> <AppendRuntimeIdentifierToOutputPath>false</Appen…...
知名员工上网行为管理系统推荐榜单
上网行为管理软件旨在帮助组织监控和管理员工的网络活动,以提高工作效率、确保网络安全和合规性。以下是一些常见的上网行为管理软件: Ping32:Ping32是一款专业的员工上网行为管理系统,Ping32作为一款专业的员工上网行为管理系统&…...
第12章 软件测试基础(第三部分)测试类型、测试工具
七、测试类型(按工程阶段划分) 单集系确收 (一)单元测试 1、单元测试/模块测试 单元就是软件中最小单位(或模块)。可以是一个函数、一个过程、一个类。主要依据是模块的详细设计文档。价值在于尽早发现…...
open-vm-tools使用虚机的拷贝/粘切
open-vm-tools 是一组用于 VMware 虚拟机中的开源工具,它们提供了一些与虚拟机操作和管理相关的功能。这些工具与 VMware 虚拟化平台集成,可以在虚拟机中提供更好的性能和功能。以下是一些 open-vm-tools 提供的功能: 1. 虚拟机增强功能: open-vm-tools 提供了与 VMware 虚…...
CKEditor编辑器的简单使用方法,取值,赋值
先从官网下载包。CKEditor 4 - Download Latest Version. 一:在项目里引用JQ基础包和CK的JS包 <script src"/JS/jquery-3.4.1.js?v1.0"></script><script src"/ckeditor/ckeditor.js"></script> 二:在表…...
创建一个线程对象需要花费多少内存空间
创建一个std::thread对象所需的内存空间大小并不是固定的,因为它取决于多种因素,包括C运行时库的实现、编译器优化、以及可能的平台和架构差异。 std::thread对象本身是一个轻量级的控制块,它主要用于管理线程的执行,包括保存线程…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
