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

机器视觉_联合编程(二)

链接相机,加载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&#xff1a;用于生成 WebCrawler 的渐进式理解 Web 代理 Fudan University;Alibaba Holding-Aicheng Technology-Enterprise Abstract&#xff1a; 网络自动化是一项重要技术&#xff0c;它通过自动化常见的网络操作来完成复杂的网络任务&#xff0c;提高效率并…...

php使用服务器端和客户端加密狗环境部署及使用记录(服务器端windows环境下部署、linux环境宝塔面板部署、客户端部署加密狗)

php使用服务器端和客户端加密狗环境部署及使用记录 ViKey加密狗环境部署1.windows环境下部署开发文档验证代码提示Fatal error: Class COM not found in 2.linux环境下部署&#xff08;宝塔面板&#xff09;开发文档验证代码提示Fatal error: Uncaught Error: Call to undefine…...

Android selinux权限

一.SE 概述 SELinux 是由美国NSA&#xff08;国安局&#xff09;和 SCC 开发的 Linux的一个扩张强制访问控制安全模块。原先是在Fluke上开发的&#xff0c;2000年以 GNU GPL 发布。从 fedora core 2开始&#xff0c; 2.6内核的版本都支持SELinux。 在 SELinux 出现之前&#…...

Flutter笔记:Widgets Easier组件库(9)使用弹窗

Flutter笔记 Widgets Easier组件库&#xff08;9&#xff09;&#xff1a;使用弹窗 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;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&#xff0c;控制面板没有显示出来&#xff0c;按照以下步骤处理&#xff1a; 1&#xff09;删除残余文件 C:\Program Files\Microsoft Office C:\Program Files (x86)\Microsoft Office 2&#xff09;删除残余注册表信息 计算机\HKEY_CL…...

python selenium 滑动后获取动态追加的元素

在使用Python的Selenium库进行网页自动化时&#xff0c;如果需要滑动页面并获取动态追加的元素&#xff0c;可以使用以下步骤&#xff1a; 使用Selenium定位到滑动条元素。 执行滑动操作&#xff0c;可以调用execute_script方法来模拟滑动。 使用WebDriverWait和expected_co…...

【idea-sprongboot项目】在linux服务器上纯远程开发方式

继上一篇博客【idea-sprongboot项目】SSH连接云服务器进行远程开发-CSDN博客 目录 五、远程开发方式 2&#xff09;纯远程开发方式 步骤 五、远程开发方式 2&#xff09;纯远程开发方式 实现原理&#xff0c; 步骤 &#xff08;1&#xff09;首先&#xff0c;关闭当前正在…...

ADC模-数转换原理与实现

1. 今日摸鱼计划 今天来学习一下ADC的原理&#xff0c;然后把ADC给实现 ADC芯片:ADC128S102 视频&#xff1a; 18A_基于SPI接口的ADC芯片功能和接口时序介绍_哔哩哔哩_bilibili 18B_使用线性序列机思路分析SPI接口的ADC芯片接口时序_哔哩哔哩_bilibili 18C_基于线性序列机的S…...

Android 文件传输

目录 device explorer 文件目录关系对应&#xff1a; device explorer 经常写adb命令传文件&#xff0c;结果发现Android studio有自带的文件管理器&#xff0c;可以上传下载文件。 tool windows ->device explorer 文件目录关系对应&#xff1a; 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 会话技术 两种会话&#xff1a;cookie&#xff0c;sessi…...

windows11忘记登录密码怎么办?

STEP1&#xff1a;进入Win RE界面 1.按住shift不要松手,点击重新启动&#xff0c;进入WINRE界面 2.选择疑难解答 选择高级选项 点击命令提示符 STEP2:替换utilman 1.输入以下代码查看所在windows所在盘 diskpart list volume exit 2.根据所在盘输入命令&#xff08;以C盘为…...

C#里如何设置输出路径,不要net7.0-windows

官网介绍&#xff1a; 更改生成输出目录 - Visual Studio (Windows) | Microsoft Learn <PropertyGroup> <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath> <AppendRuntimeIdentifierToOutputPath>false</Appen…...

知名员工上网行为管理系统推荐榜单

上网行为管理软件旨在帮助组织监控和管理员工的网络活动&#xff0c;以提高工作效率、确保网络安全和合规性。以下是一些常见的上网行为管理软件&#xff1a; Ping32&#xff1a;Ping32是一款专业的员工上网行为管理系统&#xff0c;Ping32作为一款专业的员工上网行为管理系统&…...

第12章 软件测试基础(第三部分)测试类型、测试工具

七、测试类型&#xff08;按工程阶段划分&#xff09; 单集系确收 &#xff08;一&#xff09;单元测试 1、单元测试/模块测试 单元就是软件中最小单位&#xff08;或模块&#xff09;。可以是一个函数、一个过程、一个类。主要依据是模块的详细设计文档。价值在于尽早发现…...

open-vm-tools使用虚机的拷贝/粘切

open-vm-tools 是一组用于 VMware 虚拟机中的开源工具,它们提供了一些与虚拟机操作和管理相关的功能。这些工具与 VMware 虚拟化平台集成,可以在虚拟机中提供更好的性能和功能。以下是一些 open-vm-tools 提供的功能: 1. 虚拟机增强功能: open-vm-tools 提供了与 VMware 虚…...

CKEditor编辑器的简单使用方法,取值,赋值

先从官网下载包。CKEditor 4 - Download Latest Version. 一&#xff1a;在项目里引用JQ基础包和CK的JS包 <script src"/JS/jquery-3.4.1.js?v1.0"></script><script src"/ckeditor/ckeditor.js"></script> 二&#xff1a;在表…...

创建一个线程对象需要花费多少内存空间

创建一个std::thread对象所需的内存空间大小并不是固定的&#xff0c;因为它取决于多种因素&#xff0c;包括C运行时库的实现、编译器优化、以及可能的平台和架构差异。 std::thread对象本身是一个轻量级的控制块&#xff0c;它主要用于管理线程的执行&#xff0c;包括保存线程…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...