机器视觉_联合编程(二)
链接相机,加载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对象本身是一个轻量级的控制块,它主要用于管理线程的执行,包括保存线程…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...

Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...

论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...