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

C# OpenCV机器视觉:对位贴合

在热闹非凡的手机维修街上,阿强开了一家小小的手机贴膜店。每天看着顾客们自己贴膜贴得歪歪扭扭,不是膜的边缘贴不整齐,就是里面充满了气泡,阿强心里就想:“要是我能有个自动贴膜的神器,那该多好啊,就可以让顾客们轻松拥有完美贴膜的手机啦 而且还能让我的小店生意更加红火呢!”

有一天,阿强在研究手机贴膜技术时,听说了 OpenCvSharp 这个神奇的工具,里面的传统 opencv 算法说不定能帮他实现自动贴膜的梦想呢!

第一章:神奇的 “对位贴合” 魔法降临

阿强开始研究 OpenCvSharp,发现其中的对位贴合算法就像一把神奇的钥匙,可以帮助他解决手机贴膜的位置精准度问题。

“哇,这个对位贴合算法就像是一个能让手机和钢化膜找到彼此最佳位置的魔法哟!” 阿强兴奋地说道,“有了它,我就可以让手机贴膜变得既简单又完美啦。”

阿强知道,对位贴合算法的原理是先找到手机屏幕和钢化膜的关键特征点,然后根据这些特征点计算它们之间的位置关系,就像给手机屏幕和钢化膜之间搭建一座精准的桥梁,让钢化膜能准确地贴合在手机屏幕上,而且不会有丝毫偏差。

第二章:准备开启 “自动贴膜” 计划

阿强先把店里的各种型号的手机和钢化膜准备好,作为他的实验对象。然后,他开始在自己那台有点老旧的电脑上安装 OpenCvSharp 库。

“嘿,电脑老兄,你可得配合我呀,我可全指望你啦!” 阿强一边安装一边念叨着。可是,安装过程并不顺利,各种报错和依赖问题就像调皮的小精灵一样,不断地给阿强制造麻烦。不过,阿强没有轻易放弃,他在网上各种搜索,又请教了很多技术大神,费了九牛二虎之力,终于成功安装好啦。

“太棒啦,这下可以开始我的贴膜大业啦!” 阿强开心地欢呼着,然后打开编程软件,准备大展身手。

第三章:代码冲锋 —— 让手机贴膜变得轻松又完美

阿强开始编写代码啦,他的手指在键盘上轻快地跳动着,就像在弹奏一首美妙的乐曲。

using System;
using OpenCvSharp;
using OpenCvSharp.Features2D;class AutoPhoneFilmSticker
{static void Main(){// 1. 读取手机屏幕和钢化膜的图像Mat phoneScreen = Cv2.ImRead("phone_screen.jpg", ImreadModes.Grayscale);Mat film = Cv2.ImRead("tempered_film.jpg", ImreadModes.Grayscale);if (phoneScreen.Empty() || film.Empty()){Console.WriteLine("哎呀,图像读取失败啦!是不是路径写错了或者文件损坏啦?赶紧检查检查哦。");return;}// 2. 利用SIFT特征检测器找到关键特征点var sift = SIFT.Create();KeyPoint[] phoneKeypoints, filmKeypoints;Mat phoneDescriptors, filmDescriptors;sift.DetectAndCompute(phoneScreen, null, out phoneKeypoints, out phoneDescriptors);sift.DetectAndCompute(film, null, out filmKeypoints, out filmDescriptors);// 3. 使用FLANN匹配器找到最佳匹配特征点对var indexParams = new FlannBasedMatcher.IndexParams();var searchParams = new FlannBasedMatcher.SearchParams();var flann = new FlannBasedMatcher(indexParams, searchParams);DMatch[] matches = flann.Match(phoneDescriptors, filmDescriptors);// 4. 筛选出优质的匹配点double minDistance = double.MaxValue;foreach (var match in matches){if (match.Distance < minDistance){minDistance = match.Distance;}}List<DMatch> goodMatches = new List<DMatch>();foreach (var match in matches){if (match.Distance < 3 * minDistance){goodMatches.Add(match);}}// 5. 计算手机屏幕和钢化膜之间的变换矩阵Point2f[] phonePoints = new Point2f[goodMatches.Count];Point2f[] filmPoints = new Point2f[goodMatches.Count];for (int i = 0; i < goodMatches.Count; i++){phonePoints[i] = phoneKeypoints[goodMatches[i].QueryIdx].Pt;filmPoints[i] = filmKeypoints[goodMatches[i].TrainIdx].Pt;}Mat homography = Cv2.FindHomography(filmPoints, phonePoints, HomographyMethods.Ransac);// 6. 对钢化膜进行变换,使其与手机屏幕完美贴合Mat result = new Mat();Cv2.WarpPerspective(film, result, homography, new Size(phoneScreen.Cols, phoneScreen.Rows));// 7. 显示结果,这里假设先将结果显示出来看看贴合效果Cv2.ImShow("Film on Phone Screen", result);Cv2.WaitKey(0);Cv2.DestroyAllWindows();// 8. 实际应用中,这里可以添加控制机械臂等设备将钢化膜贴到手机屏幕上的代码逻辑,暂时省略// 例如:ControlRobotArmToStickFilm(result);}
}

代码解析

  1. 读取图像:阿强使用Cv2.ImRead函数来读取手机屏幕和钢化膜的图像,就像在贴膜前先把手机屏幕和钢化膜准备好放在面前一样。要是读取失败,程序会提醒阿强检查路径和文件,因为没了图像,就没法进行后续操作啦。
  2. 特征提取:通过SIFT.Create()创建 SIFT 特征检测器,这个检测器会找出手机屏幕和钢化膜上的关键特征点,并为这些特征点生成描述符。这就好比给手机屏幕和钢化膜打上了独特的 “标签”,方便后续找到它们的对应关系哦。
  3. 特征匹配:使用FlannBasedMatcher来匹配手机屏幕和钢化膜的特征点,它会像一个超级红娘,在众多的特征点中找到最匹配的 “情侣”,帮助阿强找到两者之间的关联。
  4. 筛选优质匹配点:通过比较匹配点之间的距离,筛选出优质的匹配点。因为可能有些匹配并不那么准确,所以阿强要像挑选最默契的伙伴一样,挑出那些最匹配的特征点对,这样才能保证贴膜的准确性哦。
  5. 计算变换矩阵:根据筛选出的优质匹配点,利用Cv2.FindHomography函数计算出变换矩阵,这个矩阵包含了将钢化膜完美贴合到手机屏幕上的平移、旋转和缩放等信息,就像找到了将钢化膜放到手机屏幕上的精确 “魔法公式”。
  6. 图像变换:使用Cv2.WarpPerspective函数根据变换矩阵对钢化膜图像进行变换,让它能够和手机屏幕的形状和位置相匹配,就像把钢化膜变成了手机屏幕的 “完美形状”。
  7. 显示结果:通过Cv2.ImShow将变换后的图像显示出来,阿强可以先看看效果,看看钢化膜是不是能完美地贴在手机屏幕上啦。
  8. 实际应用:在实际贴膜操作中,这里会添加控制机械臂等设备将钢化膜贴到手机屏幕上的代码逻辑,不过暂时省略啦,阿强想先看看图像贴合的效果,就像先做个试验,成功了再进行下一步行动。

第四章:实战检验 —— 贴膜神器初显身手

阿强满心期待地运行了程序,当看到屏幕上显示出完美贴合在手机屏幕位置上的钢化膜图像时,他激动得跳了起来。

“哇塞,太棒啦!我好像离自动贴膜大师又近了一步呢!” 阿强兴奋地喊道。

阿强开始进一步完善他的自动贴膜系统,他想在这个基础上添加机械臂控制的代码,让机械臂能够根据计算出来的贴合位置,精准地把钢化膜贴在手机上。

当阿强把这个想法告诉周围的朋友和顾客时,大家都觉得他太酷啦。有个朋友开玩笑说:“阿强,等你成功了,我第一个来体验你的自动贴膜服务哦 我再也不想自己贴得满是气泡啦!”

阿强知道,自己还有很多工作要做,但他相信,在 OpenCvSharp 对位贴合算法的帮助下,他一定能实现自动贴膜的梦想。未来,他的手机贴膜店将会因为这个神奇的技术变得更加出色,他也会成为人人称赞的 “手机贴膜大师” 呢 而他的这个奇妙的手机贴膜故事,也会在手机维修街上流传开来,激励着更多人去探索技术的神奇力量。

相关文章:

C# OpenCV机器视觉:对位贴合

在热闹非凡的手机维修街上&#xff0c;阿强开了一家小小的手机贴膜店。每天看着顾客们自己贴膜贴得歪歪扭扭&#xff0c;不是膜的边缘贴不整齐&#xff0c;就是里面充满了气泡&#xff0c;阿强心里就想&#xff1a;“要是我能有个自动贴膜的神器&#xff0c;那该多好啊&#xf…...

【计算机网络】TCP/IP 网络模型有哪几层?

目录 应用层 传输层 网络层 网络接口层 总结 为什么要有 TCP/IP 网络模型&#xff1f; 对于同一台设备上的进程间通信&#xff0c;有很多种方式&#xff0c;比如有管道、消息队列、共享内存、信号等方式&#xff0c;而对于不同设备上的进程间通信&#xff0c;就需要网络通…...

本地部署Deepseek R1

使用Ollama open-webui部署Deepseek R1 一、安装Ollama 官网地址&#xff1a;https://ollama.com/&#xff0c;点击下载按钮选择windows版本。并安装 打开命令提示符输入ollama&#xff0c;出现一下提示命令表示ollama安装完成 二、使用Ollama下载deepseek R1不同模型 打开o…...

PHP盲盒商城系统源码 晒图+免签+短信验证+在线回收 thinkphp框架

源码介绍 PHP盲盒商城系统源码 晒图免签短信验证在线回收 thinkphp框架 源码前端uniapp开发&#xff0c;可以打包成APP&#xff08;非H5封壳&#xff09;H5&#xff0c;接其他平台支付通道&#xff0c;前后端全开源 H5盲盒首页可以直接开盒新UI 修复优化BUG&#xff0c;修复无…...

[Do374]ansible-nagivator考前整理

[Do374]ansible-nagivator考前整理 1. Ansible-Navigator 升级后的变化1.1 主要变化1.2 重大改变 2. ansible主要配置文件2.1 .ansible-navigator.yml2.2 ansible.cnf 3. 常用模块3.1 file模块3.2 copy模块3.3 user模块和lookup模块3.4 yum和yum_repository模块3.5 systemd和se…...

deepseek+kimi自动生成ppt

打开deepseek官网&#xff0c;输入详细的需求&#xff0c;让他生成个ppt 接着deepseek开始思考生成了 接着复制生成了的内容 打开kimi粘贴刚才deepseek生成的内容 可以一键生成啦&#xff0c;下载编辑使用吧...

循环神经网络学习01——transformer:输入部分-嵌入层位置编码

一、介绍 1、核心思想 利用自注意力机制来捕获输入序列中各元素之间的全局依赖关系&#xff0c;无论这些元素之间的实际距离有多远。 自注意力机制&#xff1a;允许模型在处理序列的每个元素时&#xff0c;考虑到序列中的所有其他元素&#xff0c;从而捕捉它们之间的关系和依…...

centos系统清理docker日志文件

在CentOS系统中&#xff0c;Docker日志文件的不断增长可能会占用大量磁盘空间&#xff0c;影响系统性能和正常运行。为了保持系统的健康状态&#xff0c;需要定期清理Docker日志文件。本文将详细介绍如何在CentOS系统上清理Docker日志文件的具体步骤和方法。 Docker日志文件位…...

低成本+高性能+超灵活!Deepseek 671B+Milvus重新定义知识库搭建

“老板说&#xff0c;这个项目得上Deepseek,还得再做个知识库...” 还有哪个开发者&#xff0c;最近没听到这样的抱怨&#xff1f; Deepseek爆火&#xff0c;推理端的智能提速&#xff0c;算力成本急剧下降&#xff0c;让不少原本不想用大模型&#xff0c;用不起大模型的企业&a…...

Windows 本地部署大模型 OpenWebUI+Ollama

安装Ollama Ollama官方网址&#xff1a;https://ollama.com 下载运行大模型 在Ollama官网中查看需要下载的大模型 https://ollama.com/library 复制图片中的链接 打开cmd&#xff0c;运行此命令&#xff08;此过程会时间会很久&#xff09; 下载Miniconda Miniconda作用是…...

【iOS自动化】Xcode配置WebDriverAgent

WebDriverAgent 是 iOS 端自动化测试的工具&#xff0c;这里记录下 MacOS 环境 Xcode 如何配置 WebDriverAgent。 【重要】环境准备 ‼️ 注意&#xff1a;Xcode 版本需要支持对应的 iOS 版本&#xff0c;而 Xcode 版本又依赖 MacOS 版本&#xff1b;在开始部署前&#xff0c…...

RabbitMQ 延迟队列

1.延迟队列插件安装(版本号要对其&#xff09; Releases rabbitmq/rabbitmq-delayed-message-exchange GitHub 下载的文件: rabbitmq_delayed_message_exchange-3.13.0.ez 直接复制到以下文件夹&#xff1a; \RabbitMQ Server\rabbitmq_server-3.13.7\plugins\ 执行命令…...

JVM-Java虚拟机

基础知识 JVM的定义与作用 定义&#xff1a;JVM是Java语言的一部分&#xff0c;它是一个虚拟的计算机&#xff0c;通过它可以执行Java程序。 作用&#xff1a; 跨平台支持&#xff1a;实现了“编译一次&#xff0c;到处运行”的目标。 自动内存管理&#xff1a;通过垃圾回收…...

Unity底层C#处理机制深度解析

一、Unity脚本执行架构 Unity采用分层架构处理C#脚本&#xff0c;核心由以下组件构成&#xff1a; 脚本引擎层 Mono Runtime&#xff08;旧版本&#xff09; IL2CPP&#xff08;2015版本&#xff09; Burst Compiler&#xff08;DOTS体系&#xff09; 原生交互层 Runtime …...

【WB 深度学习实验管理】使用 PyTorch Lightning 实现高效的图像分类实验跟踪

本文使用到的 Jupyter Notebook 可在GitHub仓库002文件夹找到&#xff0c;别忘了给仓库点个小心心~~~ https://github.com/LFF8888/FF-Studio-Resources 在机器学习项目中&#xff0c;实验跟踪和结果可视化是至关重要的环节。无论是调整超参数、优化模型架构&#xff0c;还是监…...

MFC 应用最小化到系统托盘

本指南将实现 MFC 应用程序在关闭时最小化系统托盘的功能&#xff0c;并左键和右键系统托盘图标进行交互。 目标&#xff1a; 左键点击托盘图标&#xff1a;恢复对话框窗口。右键点击托盘图标&#xff1a;弹出右键菜单&#xff0c;提供 恢复窗口 和 退出程序 两个选项。退出时…...

C++ ——从C到C++

1、C的学习方法 &#xff08;1&#xff09;C知识点概念内容比较多&#xff0c;需要反复复习 &#xff08;2&#xff09;偏理论&#xff0c;有的内容不理解&#xff0c;可以先背下来&#xff0c;后续可能会理解更深 &#xff08;3&#xff09;学好编程要多练习&#xff0c;简…...

【OCPP】ocpp1.6J协议框架说明

目录 1.简介 1.1.本文件的目的 1.2.目标受众 1.3. OCPP-S and OCPP-J 1.4. 约定 1.5.定义和缩写 1.6.参考 2.优点和问题 3.连接 3.1.客户要求 3.1.1.连接URL 3.1.2.OCPP版本 3.1.3.打开HTTP请求的示例 3.2.服务器响应 3.3.更多信息 4.RPC框架 4.1.介绍 4.1.1…...

Swipe横滑与SwipeItem自定义横滑相互影响

背景 vue项目&#xff0c;H5页面&#xff0c;使用vant的组件库轮播组件<Swipe>&#xff0c;UI交互要求&#xff0c;在每个SwipeItem中有内容&#xff0c;可自横滑&#xff0c;查看列表内容 核心代码 <template><Swipeclass"my_swipe":autoplay&quo…...

渗透利器工具:Burp Suite 联动 XRAY 图形化工具.(主动扫描+被动扫描)

Burp Suite 联动 XRAY 图形化工具.&#xff08;主动扫描被动扫描&#xff09; Burp Suite 和 Xray 联合使用&#xff0c;能够将 Burp 的强大流量拦截与修改功能&#xff0c;与 Xray 的高效漏洞检测能力相结合&#xff0c;实现更全面、高效的网络安全测试&#xff0c;同时提升漏…...

C# 学习目录

以下内容仅供参考 基础概念 数据类型(使用与定义)-CSDN博客 var使用-CSDN博客 运算符&#xff08;new、sizeof、is、as)_new 运算符-CSDN博客 数据结构 数组定义与使用-CSDN博客 动态数组和泛型集合-CSDN博客 字典&#xff08;Dictonary)-CSDN博客 集合类型&#xff0…...

react native学习【9】——动态路由

react native学习【9】——动态路由 1、进入终端2、动态路由dynamic router3、编写app/_layout.jsx布局文件4、创建动态路由5、完善index.jsx文件6、完善[id].jsx文件扩展运算符...7、完整的index.jsx文件1、进入终端 2、动态路由dynamic router 官方网站 视频中的举例:当我们…...

[AI]Mac本地部署Deepseek R1模型 — — 保姆级教程

[AI]Mac本地部署DeepSeek R1模型 — — 保姆级教程 DeepSeek R1是中国AI初创公司深度求索&#xff08;DeepSeek&#xff09;推出大模型DeepSeek-R1。 作为一款开源模型&#xff0c;R1在数学、代码、自然语言推理等任务上的性能能够比肩OpenAI o1模型正式版&#xff0c;并采用MI…...

LeetCodehot 力扣热题100 验证二叉搜索树

class Solution {vector<int> nums; // 用来存储二叉树节点值的数组 public:bool isValidBST(TreeNode* root) {inorder(root); // 中序遍历二叉树&#xff0c;填充 nums 数组// 遍历 nums 数组&#xff0c;检查是否为严格递增序列for(int i0; i<nums.size()-1; i){…...

使用Kickstart配置文件封装操作系统实现Linux的自动化安装

使用Kickstart配置文件封装操作系统实现Linux的自动化安装 创建ks.cfg配置文件 可以使用已经安装完成的Linux操作系统中的/root目录下的anaconda.cfg配置文件 注意&#xff0c;配置文件会因为kickstart的版本兼容性的问题导致无法安装报错需要在实际使用过程中删除某些参数 …...

前端开发架构师Prompt指令的最佳实践

前端开发架构师Prompt 提示词可作为系统提示词使用&#xff0c;可基于用户的需求输出对应的编码方案。 本次提示词偏向前端开发的使用&#xff0c;如有需要可适当修改关键词和示例。 推荐使用 Cursor 中作为自定义指令使用Cline 插件中作为自定义指令使用在力所能及的范围内使…...

flink判断两个事件之间有没有超时(不使用CEP)

1.为啥不使用cep呢&#xff0c;cep的超时时间设置不好配置化&#xff0c;无法满足扩展要求 2.超时怎么界定。A事件发生后&#xff0c;过了N时间&#xff0c;还没有收到B事件&#xff0c;算超时。 代码如下&#xff1a; import com.alibaba.fastjson.JSONObject; import lombo…...

vue3+ts+vite+element plus设置日期时间禁止选择小于当前时间精确到时分秒

ts组件 // timeUtils.ts/*** 生成一个数组* param start* param end*/ export const makeRange (start: number, end: number): number[] > {const result: number[] [];for (let i start; i < end; i) {result.push(i);}return result; };/*** 限制今天之前的时间不…...

2025web寒假作业二

一、整体功能概述 该代码构建了一个简单的后台管理系统界面&#xff0c;主要包含左侧导航栏和右侧内容区域。左侧导航栏有 logo、管理员头像、导航菜单和安全退出按钮&#xff1b;右侧内容区域包括页头、用户信息管理内容&#xff08;含搜索框和用户数据表格&#xff09;以及页…...

2025.2.8——二、Confusion1 SSTI模板注入|Jinja2模板

题目来源&#xff1a;攻防世界 Confusion1 目录 一、打开靶机&#xff0c;整理信息 二、解题思路 step 1&#xff1a;查看网页源码信息 step 2&#xff1a;模板注入 step 3&#xff1a;构造payload&#xff0c;验证漏洞 step 4&#xff1a;已确认为SSTI漏洞中的Jinjia2…...

Mysql 函数解析

文章目录 一、模糊匹配【like】二、CASE函数1、简单case2、搜索case3、搜索case 聚合函数 一、模糊匹配【like】 一般形式为&#xff1a;列名 [NOT] LIKE ‘%关键字%’&#xff0c;示例如下&#xff1a; like %北京%列名包括北京的字样like ‘北京%’ 列名北京开头like ‘%北…...

Docker 部署 MongoDB | 国内阿里镜像

一、简易单机版 1、镜像拉取 docker pull registry.cn-hangzhou.aliyuncs.com/farerboy/mongo:8.0.5-rc1 2、运行镜像 docker run -it --name mongodb \ -e MONGO_INITDB_ROOT_USERNAMEmongoroot \ -e MONGO_INITDB_ROOT_PASSWORDmongoroot \ -v /wwwroot/opt/docker/mong…...

加速度计信号处理

【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究&#xff08;Matlab代码实现&#xff09;_加速度计滤波器-CSDN博客 https://wenku.baidu.com/view/622d38b90f22590102020740be1e650e52eacff9.html?_wkts_1738906719916&bdQ…...

Baumer工业相机堡盟相机的相机传感器芯片清洁指南

Baumer工业相机堡盟相机的相机传感器芯片清洁指南 Baumer工业相机1.Baumer工业相机传感器芯片清洁工具和清洁剂2.Baumer工业相机传感器芯片清洁步骤2.1、准备步骤2.2、清洁过程1.定位清洁工具2.清洁传感器3&#xff0e;使用吹风装置 Baumer工业相机传感器芯片清洁的优势设计与结…...

20240824 美团 笔试

文章目录 1、单选题1.11.21.31.41.51.61.71.81.91.101.111.121.131.141.151.161.171.181.191.202、编程题2.12.2岗位:硬件开发工程师(嵌入式系统软件开发方向) 题型:20 道单选题,2 道编程题题 1、单选题 1.1 C 语言中,如果输入整数 v 是 2 的幂,下面表达式中哪个会返…...

【扫描件PDF】如何批量识别扫描件PDF多个区域内容保存到Excel表格,基于WPF和腾讯OCR的详细解决方案

在很多实际业务场景中&#xff0c;需要对大量扫描件 PDF 中的特定区域内容进行识别并整理到 Excel 表格里&#xff0c;以下是一些常见的应用场景&#xff1a;物流运单扫描件 PDF 中包含发货人信息、收货人信息、货物信息等。批量识别这些区域内容到 Excel 表格&#xff0c;有助…...

Django开发入门 – 3.用Django创建一个Web项目

Django开发入门 – 3.用Django创建一个Web项目 Build A Web Based Project With Django By JacksonML 本文简要介绍如何利用最新版Python 3.13.2来搭建Django环境&#xff0c;以及创建第一个Django Web应用项目&#xff0c;并能够运行Django Web服务器。 创建该Django项目需…...

C# OpenCV机器视觉:OSTU算法实现背景差分的自适应分割

在一个热闹的科技公司里&#xff0c;阿强是一个负责图像分析的员工。他的日常工作就是从各种复杂的图像中提取出有用的信息&#xff0c;可这可不是一件轻松的事情哦 最近&#xff0c;阿强接到了一个艰巨的任务&#xff1a;要从一堆嘈杂的监控图像中分离出运动的物体&#xff0c…...

SIPp的参数及命令示例

以下是SIPp参数的分类表格整理&#xff0c;方便快速查阅和使用&#xff1a; SIPp 参数分类表格 分类参数描述默认值示例基本参数-sc指定XML场景文件&#xff08;客户端模式&#xff09;无-sc uac.xml-sd指定XML场景文件&#xff08;服务器端模式&#xff09;无-sd uas.xml-i本…...

【Mac排错】ls: command not found 终端命令失效的解决办法

【TroubleShooting on Mac】ls: command not found 终端命令失效的解决办法 A Solution to Solve “Command not found” of Terminal on Mac 一直在使用心爱的MacBook Pro的Terminal&#xff0c;并且为她定制了不同的Profile。 这样&#xff0c;看起来她可以在不同季节&…...

【OneAPI】通过网页预渲染让搜索引擎收录网页

API简介 网页预渲染&#xff0c;适用于动态网页以及单页面的SEO&#xff0c;支持网页缓存。 您无须更改代码即可让搜索引擎收录您的网页。只要将需要预渲染的页面转发的本接口即可。 如果您使用Nginx作为网页服务器&#xff0c;推荐使用以下配置&#xff1a; #您的网站locat…...

51单片机(国信长天)矩阵键盘的基本操作

在CT107D单片机综合训练平台上&#xff0c;首先将J5处的跳帽接到1~2引脚&#xff0c;使按键S4~S19按键组成4X4的矩阵键盘。在扫描按键的过程中&#xff0c;发现有按键触发信号后(不做去抖动)&#xff0c;待按键松开后&#xff0c;在数码管的第一位显示相应的数字:从左至右&…...

git命令行删除远程分支、删除远程提交日志

目录 1、从本地通过命令行删除远程git分支2、删除已 commit 并 push 的记录 1、从本地通过命令行删除远程git分支 git push origin --delete feature/feature_xxx 删除远程分支 feature/feature_xxx 2、删除已 commit 并 push 的记录 git reset --hard 7b5d01xxxxxxxxxx 恢复到…...

05-多数元素

给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 方法一&#xff1a;哈希表法 通过哈希表来记录每个元素出现的次数&#xff0c;…...

一个简单的Windows TCP服务器实现

初始化 WSADATA wsaData; SOCKET serverSocket, clientSocket; struct sockaddr_in serverAddr { 0x00 }; struct sockaddr_in clientAddr { 0x00 }; int clientAddrLen sizeof(clientAddr);if (WSAStartup(MAKEWORD(2, 2), &wsaData) ! 0) {printf("WSAStartup f…...

salesforce 中 Account 转移给新 Owner 后如何仅转移 Case,而不转移 Opportunity

在 Salesforce 中&#xff0c;当更改 Account Owner 时&#xff0c;系统默认会将所有相关的 Opportunities&#xff08;商机&#xff09; 和 Cases&#xff08;案例&#xff09; 也一并转移给新的 Account Owner。如果你希望 仅转移 Case&#xff0c;而不转移 Opportunities&am…...

Spring Boot 中的日志配置

文章目录 Spring Boot 中日志配置的源码分析1. Spring Boot 日志框架的选择与自动配置2. 日志自动配置与默认行为3. 日志系统的核心组件&#xff1a;Logger 和 LoggerFactory4. 日志配置文件的解析配置日志级别配置日志输出格式和目标 5. 日志级别的控制自定义日志级别 6. 自定…...

[前端]CRX持久化

在 Chrome 扩展开发中&#xff0c;持久化保存数据通常使用 Chrome 的 storage API。storage API 提供了两种存储选项&#xff1a;local 和 sync。使用 local 存储的数据保存在本地浏览器中&#xff0c;只能在同一设备上访问。使用 sync 存储的数据可以在用户登录其 Google 帐户…...

绕组电感 - Ansys Maxwell 磁通链与电流

在本博客中&#xff0c;我将演示如何使用 Ansys Maxwell 中磁瞬态求解器的磁通链和电流结果来计算绕组电感。Ansys Maxwell 磁瞬态求解器在场计算中考虑了涡流效应&#xff0c;我将展示一种使用磁通链和电流结果来计算绕组电感的简单方法。 实际上&#xff0c;电感是非线性的…...

ComfyUI 安装教程:macOS 和 Linux 统一步骤

本教程将详细介绍如何在 macOS 和 Linux 上安装 ComfyUI。我们将从 安装 Anaconda 开始&#xff0c;到安装 PyTorch 和 ComfyUI&#xff0c;最后提供一些常见问题的解决方法。 macOS和linux安装步骤很相似 可以按照1️⃣安装anaconda2️⃣安装python3️⃣torch4️⃣comfyui Co…...