当前位置: 首页 > 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
http://www.lryc.cn/news/343429.html

相关文章:

  • AUTOCRAWLER : A Progressive Understanding Web Agent for WebCrawler Generation
  • php使用服务器端和客户端加密狗环境部署及使用记录(服务器端windows环境下部署、linux环境宝塔面板部署、客户端部署加密狗)
  • Android selinux权限
  • Flutter笔记:Widgets Easier组件库(9)使用弹窗
  • 【解决Android Studio】cmake报错找不到vulkan包
  • 手动卸载32 位office
  • python selenium 滑动后获取动态追加的元素
  • 【idea-sprongboot项目】在linux服务器上纯远程开发方式
  • ADC模-数转换原理与实现
  • Android 文件传输
  • 一起深度学习
  • servlet-会话(cookie与session)
  • windows11忘记登录密码怎么办?
  • C#里如何设置输出路径,不要net7.0-windows
  • 知名员工上网行为管理系统推荐榜单
  • 第12章 软件测试基础(第三部分)测试类型、测试工具
  • open-vm-tools使用虚机的拷贝/粘切
  • CKEditor编辑器的简单使用方法,取值,赋值
  • 创建一个线程对象需要花费多少内存空间
  • Java -- (part23)
  • 1. C++入门:命名空间及输入输出
  • 【Kotlin】Java三目运算转成 kotlin 表达
  • 如何安全可控地进行内外网跨网络传输文件?
  • Python Json数据解析
  • pyinstaller打包pytorch和transformers程序
  • 西门子数控网络IP设定配置
  • [Unity]备份许可文件
  • 第十五届蓝桥杯省赛大学B组(c++)
  • Python Flask框架(一)初识Flask
  • VS2022 .Net6.0 无法打开窗体设计器