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

2.5 C#视觉程序开发实例1----CamManager实现模拟相机采集图片

2.5 C#视觉程序开发实例1----CamManager实现模拟相机采集图片

1 目标效果视频

CamManager

2 CamManager读取本地文件时序

在这里插入图片描述

3 BD_Vision_Utility添加代码

3.0 导入链接库
  1. BD_OperatorSets.dll
  2. System.Windows.Forms.dll
  3. OpencvSharp
3.1 导入VisionParam中创建的文件Util_FileOP

并且添加代码GetFileNamewithextension,用于罗列文件夹中所有图片文件

/// <summary>
/// GetFileNamewithextension/// </summary>/// <param name="FilePath"></param>/// <param name="FileName"></param>public void GetFileNamewithextension(string FilePath, ref List<string> FileName){//获取指定文件夹下的文件夹名try{FileName.Clear();if (FolderExist(FilePath)){string[] StrFileName = Directory.GetFiles(FilePath);for (int i = 0; i < StrFileName.Length; i++){string extension = System.IO.Path.GetExtension(StrFileName[i]);//扩展名 “.aspx”if (extension == ".png" || extension == ".bmp" || extension == ".jpg" || extension == ".jpeg")FileName.Add(StrFileName[i]);}}}catch (Exception ex){throw new Exception("GetFileNamewithextension :" + ex.Message);}}
3.2 创建CamManager.cs
3.2.1 变量创建
/// <summary>
/// ImageFile_HANDLE
/// </summary>
private struct ImageFile_HANDLE
{public int n_index;// 当前img file indexpublic List<string> list_imgs;// img  file name listpublic void  Release(){n_index = -1;list_imgs.Clear(); }public ImageFile_HANDLE(int a=0){n_index = -1; list_imgs = new List<string>();}
}
private int camCount;/// <summary>
/// imgfiles_cams
/// 管理各个相机的文件资源
/// </summary>
private ImageFile_HANDLE[] imgfiles_cams;
3.2.2 Constructor
public Cam_Manager(int _camCount) 
{if (_camCount < 1) _camCount = 1;camCount = _camCount;imgfiles_cams = new ImageFile_HANDLE[camCount];for(int i=0;i< camCount;i++){imgfiles_cams[i] = new ImageFile_HANDLE();}
}
3.2.3 open(int CamNO)
/// <summary>
/// 打开相机
/// </summary>
/// <returns></returns>
public int Open(int CamNO)
{int nRet = 0;if (CamNO < 0 || CamNO > camCount - 1) return -1;// To Dostring camFiles_path = Application.StartupPath + "\\camSimulator\\Cam" + CamNO.ToString();ContextManager.get_fileopCtx().GetFileNamewithextension(camFiles_path, ref imgfiles_cams[CamNO].list_imgs);if (imgfiles_cams[CamNO].list_imgs.Count > 0) imgfiles_cams[CamNO].n_index = 0;else{nRet = -1; }return nRet;
}
3.2.4 grab(ref Mat ,ing CamNo)
public int Grab(ref Mat himg_tmp,int CamNO)
{
int nRet = 0;
if (CamNO < 0 || CamNO > camCount - 1) return -1;
if (himg_tmp == null) return -1; try
{if (imgfiles_cams[CamNO].list_imgs.Count > 0)// 文件夹中有图片{// 读取图片索引imgfiles_cams[CamNO].n_index = imgfiles_cams[CamNO].n_index % imgfiles_cams[CamNO].list_imgs.Count;// NewImage = Cv2.ImRead( ContextManager.getCamCtx().AcqHandle[CamNO].list_imgs[ ContextManager.getCamCtx().AcqHandle[CamNO].n_index], ImreadModes.Color);BD_OperateSet.Assign_Temp(ref himg_tmp, Cv2.ImRead(imgfiles_cams[CamNO].list_imgs[imgfiles_cams[CamNO].n_index], ImreadModes.AnyColor));imgfiles_cams[CamNO].n_index++;}else MessageBox.Show("Cam" + CamNO.ToString() + "没有图像来源");
}
catch (Exception ex)
{nRet = -2;
}
return nRet;
}
3.2.5 close()关闭相机
public int Close()
{int nRet = 0;// To Do for(int i=0;i<camCount;i++)imgfiles_cams[i].Release();Array.Clear(imgfiles_cams,0, imgfiles_cams.Length);return nRet;
}
3.3 ContextManager中增加一个CamManager的实例|FileOP的实例

实现自动的资源管理和初始化

//Cam_Manager 
private static Cam_Manager cam_Ctx;
public static Cam_Manager get_camCtx()
{if (cam_Ctx == null) cam_Ctx = new Cam_Manager(4);return cam_Ctx;
}
//  FileOP Manager
private static Util_FileOP fileop_Ctx;
public static Util_FileOP get_fileopCtx()
{if (fileop_Ctx == null) fileop_Ctx = new Util_FileOP();return fileop_Ctx;
}
4 下一节 我们会实现Form_Vision中的代码,并且附上范例代码

相关文章:

2.5 C#视觉程序开发实例1----CamManager实现模拟相机采集图片

2.5 C#视觉程序开发实例1----CamManager实现模拟相机采集图片 1 目标效果视频 CamManager 2 CamManager读取本地文件时序 3 BD_Vision_Utility添加代码 3.0 导入链接库 BD_OperatorSets.dllSystem.Windows.Forms.dllOpencvSharp 3.1 导入VisionParam中创建的文件Util_FileO…...

算法简介:什么是算法?——定义、历史与应用详解

引言 在现代计算机科学中&#xff0c;算法是一个核心概念。无论是编程还是数据分析&#xff0c;算法都扮演着至关重要的角色。在这篇博客中&#xff0c;我们将深入探讨算法的定义、历史背景以及它在计算机科学中的地位和实际应用。 什么是算法&#xff1f; 算法是解决特定问题…...

xss攻击

一、xss攻击简介 1、OWASP TOP 10之一,XSS被称为跨站脚本攻击(Cross-site-scripting)2、主要基于java script(JS)完成恶意攻击行为。JS可以非常灵活的操作html、css和浏览器,这使得XSS攻击的“想象”空间特别大。3、XSS通过将精心构造代码(JS)代码注入到网页中&#xff0c;并由…...

Android 性能优化之布局优化

文章目录 Android 性能优化之布局优化绘制原理双缓冲机制布局加载原理检测耗时常规方式AOP方式获取控件加载耗时 布局优化AsyncLayoutInflater方案Compose方案减少布局层级和复杂度避免过度绘制 Android 性能优化之布局优化 绘制原理 CPU&#xff1a;负责执行应用层的measure…...

TCP 握手数据流

这张图详细描述了 TCP 握手过程中&#xff0c;从客户端发送 SYN 包到服务器最终建立连接的整个数据流转过程&#xff0c;包括网卡、内核、进程中的各个环节。下面对每个步骤进行详细解释&#xff1a; 客户端到服务器的初始连接请求 客户端发送 SYN 包&#xff1a; 客户端发起…...

MDA协议

MDA协议通常指消息摘要算法&#xff08;Message Digest Algorithm&#xff09;&#xff0c;在计算机安全和密码学中被广泛用于数据完整性验证和认证。以下是对MDA协议的详细介绍&#xff1a; 1. 概述 MDA协议是一类哈希函数&#xff0c;用于生成固定长度的消息摘要或哈希值。…...

always块敏感列表的相关报错,

在综合的时候&#xff0c;报错如下 Synthesis synth_1 [Synth 8-91] ambiguous clock in event control ["E:/FPGA/FPGA_project/handwrite_fft/handwrite_fft.srcs/sources_1/new/reg_s2p.v":140] 猜测报错原因&#xff08;暂时没有时间寻找原因&#xff0c;后续在…...

STM32空闲中断处理串口接受数据

1、检测到空闲线路中断也叫做空闲中断&#xff0c;意思是串口接收完1字节数据后&#xff0c;数据先保持高电平&#xff08;空闲&#xff09;的时间超过1字节数据所用的时间&#xff0c;则被判定为空闲中断。 2、HAL库中操作空闲中断的宏是 &#xff08;1&#xff09;_HAL_UAR…...

oak相机使用oak官网方式标定

目录 一、depthai ROS驱动 一、depthai ROS驱动 &#xff08;1&#xff09;驱动下载地址&#xff1a;2. C 开发快速上手 — DepthAI Docs 0.3.0.0 documentation sudo apt install ./depthai_2.17.1_arm64.deb //运行 Python3 utilities/cam_test.py -mres 400 -cams rgb,m …...

打造高效能“园区企业服务平台”,让企业更好更快发展!

​近年来&#xff0c;随着我国经济的快速发展&#xff0c;各地产业园区建设如火如荼&#xff0c;成为区域经济的支柱&#xff0c;如果说园区是区域经济的支柱&#xff0c;企业则是园区的血液&#xff0c;给园区带来生命力&#xff0c;为园区发展提供着动力&#xff0c;各地政府…...

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

目录&#xff1a; 目录&#xff1a; 一、什么是openssl&#xff1f; 二、所需要具备的开发工具 三、Windows上编译OpenSSL3.0 四、Linux编译openssl3.0 一、什么是openssl&#xff1f; OpenSSL 是一个开源的软件库&#xff0c;它提供了一系列加密工具和协议&#xff0c;主要用…...

前端时间格式传入后端负载里面没有东西

我是因为没有将时间值格式化&#xff0c;所有负载没有东西 <el-col :md"6"><el-form-item label"创建时间" prop"createTime"><el-date-picker v-model"queryParams.createTime" type"date" change"ha…...

BUCK电源芯片,电气参数,极限参数,工作特性,引脚功能

概述 在应用DC-DC开关电源芯片时&#xff0c;通常需要关注以下参数&#xff0c;同步与非同步&#xff0c;输入电压&#xff0c;输入电流&#xff0c;输出电压&#xff0c;输出电流&#xff0c;输入输出电容的选择&#xff1b;mosfet选型&#xff0c;电感选型&#xff0c;功耗&a…...

学习小记-使用Redis的令牌桶算法实现分布式限流

在介绍令牌桶算法前先介绍一下漏桶算法&#xff08;Leaky Bucket&#xff09; 漏桶算法&#xff08;Leaky Bucket&#xff09; 漏桶算法是一种固定容量的容器模型&#xff0c;它通过控制数据流入和流出的速度来限制数据的传输速率。漏桶算法的主要特点包括&#xff1a; 固定…...

electron + express 实现 vue 项目客户端部署

写在前面 作为一个前端程序员&#xff0c;如何实现从前端到客户端的跨越&#xff0c;可能是一个很难实现的事。但客户需求千奇百怪&#xff0c;偶尔遇到一个非要客户端的&#xff0c;如何应对&#xff1f; 那Electron可能真是你福音。具体它有哪些功能&#xff0c;可自行官网…...

千万慎投!自引率高达93%!这16本On hold正处于高危状态,无法检索,剔除岌岌可危中!近四年镇压期刊“出狱”情况一览

本周投稿推荐 SCI • 能源科学类&#xff0c;1.5-2.0&#xff08;25天来稿即录&#xff09; • CCF推荐&#xff0c;4.5-5.0&#xff08;2天见刊&#xff09; • 生物医学制药类&#xff08;2天逢投必中&#xff09; EI • 各领域沾边均可&#xff08;2天录用&#xff09…...

【数据结构】排序——快速排序

前言 本篇博客我们继续介绍一种排序——快速排序&#xff0c;让我们看看快速排序是怎么实现的 &#x1f493; 个人主页&#xff1a;小张同学zkf ⏩ 文章专栏&#xff1a;数据结构 若有问题 评论区见&#x1f4dd; &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐文章 ​ 目录 …...

Matlab 怎么查找矩阵中所有0的数据并赋值

index find(X40); X4(index)57.71527;...

开发一个HTTP模块

开发一个HTTP模块 HTTP模块的数据结构ngx_module_t模块的数据结构ngx_http_module_t数据结构ngx_command_s 数据结构 定义一个HTTP模块处理用户请求返回值获取URI和参数方法名URIURL协议版本 获取HTTP头获取HTTP包体 发送响应发送HTTP头发送内存中的字符串作为包体返回一个Hell…...

vue2实现复制,粘贴功能,使用vue-clipboard2插件

一、需求说明 在项目中 点击按钮 复制 某行文本是很常见的 应用场景&#xff0c; 在 Vue 项目中实现 复制功能 需要借助 vue-clipboard2 插件。 二、代码实现 1、安装 vue-clipboard2 依赖 &#xff08; 出现错误的话&#xff0c;可以试试切换成淘宝镜像源 npm config set r…...

【软件测试】 1+X初级 功能测试试题

【软件测试】 1X初级 功能测试试题 普通员工登录系统&#xff0c;在“个人信息维护”模块&#xff0c;可以查看和维护个人信息。个人信息维护需求包括用户&#xff08;UI&#xff09;页面、业务规则两部分。 UI 界面 个人信息维护 修改基本信息 业务规则 1. 个人信息维护页面…...

zynq启动和程序固化流程

普通FPGA启动 FPGA的启动方式主要包含主动模式、被动模式和JTAG模式。 主动模式&#xff08;AS模式&#xff09; 当FPGA器件上电时&#xff0c;它作为控制器从配置器件EPCS中主动发出读取数据信号&#xff0c;并将EPCS的数据读入到自身中&#xff0c;实现对FPGA的编程。这种…...

CSS3实现彩色变形爱心动画【附源码】

随着前端技术的发展&#xff0c;CSS3 为我们提供了丰富的动画效果&#xff0c;使得网页设计更加生动和有趣。今天&#xff0c;我们将探讨如何使用 CSS3 实现一个彩色变形爱心加载动画特效。这种动画不仅美观&#xff0c;而且可以应用于各种网页元素&#xff0c;比如加载指示器或…...

【JVM基础篇】Java的四种垃圾回收算法介绍

文章目录 垃圾回收算法垃圾回收算法的历史和分类垃圾回收算法的评价标准标记清除算法优缺点 复制算法优缺点 标记整理算法&#xff08;标记压缩算法&#xff09;优缺点 分代垃圾回收算法&#xff08;常用&#xff09;JVM参数设置使用Arthas查看内存分区垃圾回收执行流程分代GC算…...

Kodcloud可道云安装与一键发布上线实现远程访问详细教程

文章目录 1.前言2. Kodcloud网站搭建2.1. Kodcloud下载和安装2.2 Kodcloud网页测试 3. cpolar内网穿透的安装和注册4. 本地网页发布4.1 Cpolar云端设置4.2 Cpolar本地设置 5. 公网访问测试6.结语 1.前言 本文主要为大家介绍一款国人自研的在线Web文件管理器可道云&#xff0c;…...

python杨辉三角的两种书写方式

第一种&#xff08;设置二维列表设置每个元素为0进行替换元素&#xff09; 代码演示&#xff1a; n eval(input("请输入想要的行数")) lst[[0 for j in range(n)] for i in range(n)] # lst2[[0]*n]*n for i in range(n):for j in range(i1):if j0 or ji:lst[i][j…...

【CSS in Depth 2精译】2.5 无单位的数值与行高

当前内容所在位置 第一章 层叠、优先级与继承第二章 相对单位 2.1 相对单位的威力2.2 em 与 rem2.3 告别像素思维2.4 视口的相对单位2.5 无单位的数值与行高 ✔️2.6 自定义属性2.7 本章小结 2.5 无单位的数值与行高 有些属性允许使用无单位的数值&#xff08;unitless value…...

【人脸识别、Python实现】PyQt5人脸识别管理系统

PyQt5人脸识别管理系统 项目描述主要功能效果展示获取源码 项目描述 接的一个基于宿舍管理系统与人脸识别的小单子。然后我把它优化了一些&#xff0c;现在开源一下。有需要的小伙伴自取&#xff0c;点个免费的关注就行 主要功能 1、录入学生基本信息、录入人脸 2、主页面展…...

软设之观察者模式

设计模式中&#xff0c;观察者模式的意图是:定义对象间的一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新。 比如说&#xff0c;有一个新闻网站&#xff0c;订阅的用户众多&#xff0c;假如说管理员发布了一…...

deep learning 环境配置

1 NVIDIA驱动安装 ref link: https://blog.csdn.net/weixin_37926734/article/details/123033286 2 cuda安装 ref link: https://blog.csdn.net/qq_63379469/article/details/123319269 进去网站 https://developer.nvidia.com/cuda-toolkit-archive 选择想要安装的cuda版…...