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

C# OpenCV机器视觉:利用CNN实现快速模板匹配

在一个阳光灿烂的周末,阿强正瘫在沙发上,百无聊赖地换着电视频道。突然,一则新闻吸引了他的注意:某博物馆里一幅珍贵的古画离奇失踪,警方怀疑是被一伙狡猾的盗贼偷走了,现场只留下一些模糊不清的监控画面,根本无法确定盗贼的行踪。阿强看着电视里那一团乱麻的线索,眼睛突然一亮,心中涌起一股热血:“要是我能帮警方找到盗贼,那可就太酷了!说不定还能得到博物馆的巨额悬赏,从此走上人生巅峰呢!”

说干就干,阿强立马冲进他那堆满各种电子设备和书籍的 “秘密基地”。他一边翻箱倒柜,一边嘴里嘟囔着:“我就不信了,凭我这一身的科技本领,还找不到几个毛贼!” 就在这时,他的目光落在了一台布满灰尘的电脑上,脑海中突然闪过一个念头:“对了!我可以用 OpenCvSharp 结合 CNN 来进行模板匹配,从监控画面里找出盗贼的蛛丝马迹!”

第一章:神秘的 CNN—— 图像世界的 “超级侦探”
阿强深知,要想在这复杂的图像世界里找到盗贼的线索,CNN(卷积神经网络)可是他的秘密武器。但这个 CNN 到底是何方神圣呢?阿强决定给它编一个神秘的故事,好让自己更有干劲。

“传说中,CNN 是图像世界里的一位超级侦探,它有着一双无比锐利的眼睛,能看穿图像里隐藏的所有秘密。” 阿强一边对着空气比划,一边眉飞色舞地说道,“它的大脑里装满了各种神奇的算法,就像一个藏满了魔法道具的宝库。当它面对一张图像时,就会施展它的魔法,把图像里的各种特征都提取出来,然后和它记忆中的模板进行比对,不管是多么微小的细节,都逃不过它的法眼。”

阿强越说越兴奋,仿佛自己已经成为了 CNN 的主人,带着它在图像世界里大杀四方:“比如说,我们要找一个特定的图案,CNN 就会像一个不知疲倦的寻宝者,在图像的每一个角落仔细搜寻。它会用它的魔法卷积核,一层一层地扫描图像,就像在给图像做一次深度按摩,把那些隐藏在像素背后的秘密都挖掘出来。一旦发现和模板相似的地方,它就会像发现了宝藏一样,立刻发出信号。”

第二章:筹备 “抓贼” 行动 —— 装备与知识武装
阿强决定先从监控画面里提取一些可能和盗贼有关的模板,比如他们的身形、衣着特征等。他打开电脑,启动 OpenCvSharp,开始加载监控图像和制作模板。

“嘿,老伙计,今天就靠你帮我找出那些可恶的盗贼了!” 阿强拍了拍电脑,像是在给它打气。

他小心翼翼地从监控视频中截取了几帧画面,然后用图像处理软件把盗贼的大致轮廓勾勒出来,制作成模板。“这些模板就是我们的‘通缉令’,只要盗贼在图像里出现,就别想逃过我们的追捕!” 阿强看着屏幕上的模板,信心满满地说道。

接下来,就是要把这些模板和 OpenCvSharp 里的 CNN 算法结合起来,让它们发挥出最大的威力。阿强开始编写代码,虽然他心里也有点紧张,但一想到自己即将成为英雄,就充满了动力。

阿强一边编写代码,一边在心里默默念叨:“我先把图像和模板都加载进来,就像把案件的线索和嫌疑人的画像都收集好。然后把模板标准化,让它们都有相同的尺寸,这样 CNN 才能更好地比对。接着把模板合并成一个多通道的卷积核,这就像是给 CNN 一把超级武器,让它能同时搜索多个目标。再用这个卷积核对图像进行卷积操作,就像让 CNN 在图像里进行地毯式搜索。最后,设置一个相似度阈值,只要找到的匹配度超过这个阈值,就说明我们可能找到了盗贼的踪迹!”

class CNN模板匹配
{static void TEST(){// 加载图像和多个模板  Mat image = Cv2.ImRead(@"D:\软件\core\test\Image_20240622141940849.bmp", ImreadModes.Grayscale);Mat template1 = Cv2.ImRead(@"D:\软件\core\template\1274.png", ImreadModes.Grayscale);Mat template2 = Cv2.ImRead(@"D:\软件\core\template\1282.png", ImreadModes.Grayscale);// 标准化模板  Size templateSize = new Size(33, 33);Cv2.Resize(template1, template1, templateSize);Cv2.Resize(template2, template2, templateSize);// 合并模板为一个多通道卷积核  Mat filters = new Mat();Cv2.Merge(new Mat[] { template1, template2 }, filters); // 合并模板为多通道  // 创建输出图像  Mat outputImg = new Mat(image.Size(), MatType.CV_8UC3);Cv2.CvtColor(image, outputImg, ColorConversionCodes.BGR2RGB); // 转换为 RGB 格式以便于显示 // 执行卷积操作  Mat result = new Mat();Cv2.Filter2D(image, result, MatType.CV_32F, filters); // 使用多通道卷积核进行卷积  // 设置相似度阈值  double similarityThreshold = 0.8;// 计算每个模板的参考值  double[] referenceValues = new double[filters.Channels()];for (int i = 0; i < filters.Channels(); i++){referenceValues[i] = Cv2.Sum(filters.Split()[i])[0]; // 计算每个模板的参考值  }// 可视化所有匹配位置  for (int y = 0; y < result.Rows; y++){for (int x = 0; x < result.Cols; x++){// 获取匹配值  double outputValue = result.At<float>(y, x);// 计算相似度  for (int i = 0; i < referenceValues.Length; i++){double similarity = 1 - Math.Abs(outputValue - referenceValues[i]) / referenceValues[i];// 仅在相似度超过阈值时可视化匹配位置  if (similarity > similarityThreshold){int centerX = x; // 圆心的 x 坐标  int centerY = y; // 圆心的 y 坐标  Cv2.Circle(outputImg, new Point(centerX, centerY), 2, new Scalar(179, 240, 240), thickness: 1);Cv2.Rectangle(outputImg, new Rect(x, y, templateSize.Width, templateSize.Height), new Scalar(179, 240, 240), 1);}}}}// 显示结果  Cv2.ImShow("Match Result", outputImg);Cv2.WaitKey(0);Cv2.DestroyAllWindows();}
}

第三章:代码冲锋 —— 让 CNN “大显身手”
代码编写完成后,阿强深吸一口气,按下了运行键。电脑屏幕上的图像开始快速闪烁,CNN 就像一个不知疲倦的侦探,在图像的每一个角落仔细搜寻着。

“快了,快了,马上就能找到那些盗贼了!” 阿强紧张地盯着屏幕,眼睛都不敢眨一下。

突然,屏幕上出现了几个绿色的圆圈和矩形,标记出了图像中与模板相似度较高的位置。阿强兴奋地跳了起来:“找到了!终于找到了!我就知道 CNN 不会让我失望的!”

他仔细查看这些标记的位置,发现有几个地方的身形和衣着特征与盗贼的模板非常相似。阿强立刻把这些信息整理成报告,发送给了警方。

第四章:真相大白 —— 阿强的 “英雄时刻”
几天后,警方传来了好消息:他们根据阿强提供的线索,成功抓获了盗贼,找回了被盗的古画。博物馆为了感谢阿强,特意举办了一场盛大的颁奖典礼,阿强一下子成了当地的名人。

“阿强,你可真是我们的大英雄啊!” 博物馆馆长握着阿强的手,激动地说道。

阿强不好意思地挠挠头:“其实我也没做什么,主要是 OpenCvSharp 和 CNN 的功劳。”

从那以后,阿强更加痴迷于 OpenCvSharp 和 CNN 的研究。他知道,这只是他在图像世界里的一次小小冒险,未来还有更多的挑战和惊喜等待着他。而他,也将继续用科技的力量,去探索这个神秘而又充满魅力的图像世界。

相关文章:

C# OpenCV机器视觉:利用CNN实现快速模板匹配

在一个阳光灿烂的周末&#xff0c;阿强正瘫在沙发上&#xff0c;百无聊赖地换着电视频道。突然&#xff0c;一则新闻吸引了他的注意&#xff1a;某博物馆里一幅珍贵的古画离奇失踪&#xff0c;警方怀疑是被一伙狡猾的盗贼偷走了&#xff0c;现场只留下一些模糊不清的监控画面&a…...

数据结构——实验七·排序

欢迎各位大佬们来到Tubishu的博客&#x1f31f; Tubishu是一名计算机本科生&#xff0c;不定期发送一些在学校的成果供佬们消遣~希望能为佬的编程之路添砖加瓦⭐&#x1f525; 求各位大佬们垂怜&#x1f525;点赞评论一下呗&#x1f525;&#x1f525; 本文专栏 ➡️ 数据结构 …...

Flutter_学习记录_Tab的简单Demo~真的很简单

1. Tab的简单使用了解 要实现tab(选项卡或者标签视图)需要用到三个组件&#xff1a; TabBarTabBarViewTabController 这一块&#xff0c;我也不知道怎么整理了&#xff0c;直接提供代码吧&#xff1a; import package:flutter/material.dart;void main() {runApp(MyApp());…...

const的用法

文章目录 一、C和C中const修饰变量的区别二、const和一级指针的结合const修饰的量常出现的错误是:const和一级指针的结合总结&#xff1a;const和指针的类型转换公式 三、const和二级指针的结合 一、C和C中const修饰变量的区别 C中&#xff1a;const必须初始化&#xff0c;叫常…...

分布式微服务系统简述

distributed microservice 分布式与微服务的定义及关系&#xff1b;分布式微服务架构里的各组件&#xff0c;如&#xff1a;配置中心、服务注册/发现、服务网关、负载均衡器、限流降级、断路器、服务调用、分布式事务等&#xff1b;spring cloud 介绍及实现案例&#xff0c;如…...

Uniapp开发总结

一、tabBar 如果应用是一个多 tab 应用&#xff0c;可以通过 tabBar 配置项指定一级导航栏&#xff0c;以及 tab 切换时显示的对应页。 pages.json 页面路由 | uni-app官网 pages.json基本配置&#xff1a; "tabBar": {"color": "#000",&quo…...

uniapp APP端页面触发调用webview(页面为uniapp开发的H5)里的方法

原理&#xff1a; 使用 getCurrentInstance() 获取当前组件的 Vue 实例&#xff0c;通过 instance.proxy.$scope.$getAppWebview() 获取 Uniapp 的原生 WebView 对象。 使用 WebView 提供的 evalJS 方法&#xff0c;执行嵌入 H5 页面内的 JavaScript 代码 <template>&l…...

Qt 5.14.2 学习记录 —— 이십 QFile和多线程

文章目录 1、QFile1、打开2、读写3、关闭4、程序5、其它功能 2、多线程1、演示2、锁 3、条件变量和信号量 1、QFile Qt有自己的一套文件体系&#xff0c;不过Qt也可以使用C&#xff0c;C&#xff0c;Linux的文件操作。使用Qt的文件体系和Qt自己的一些类型更好配合。 管理写入读…...

未初始化数据恢复全攻略

没有初始化概述 在日常使用电脑、硬盘、U盘等存储设备时&#xff0c;我们可能会遇到“没有初始化”的提示。这一情况通常发生在存储设备突然无法被系统正常识别或访问时&#xff0c;系统往往要求我们先进行初始化操作。然而&#xff0c;初始化操作意味着对存储设备进行格式化&…...

自动驾驶中的多传感器时间同步

目录 前言 1.多传感器时间特点 2.统一时钟源 2.1 时钟源 2.2 PPSGPRMC 2.3 PTP 2.4 全域架构时间同步方案 3.时间戳误差 3.1 硬件同步 3.2 软件同步 3.2.3 其他方式 ① ROS 中的 message_filters 包 ② 双端队列 std::deque 参考&#xff1a; 前言 对多传感器数据…...

三元组抽取在实际应用中如何处理语义模糊性?

在实际应用中&#xff0c;三元组抽取面临语义模糊性的问题&#xff0c;这主要体现在输入文本的非规范描述、复杂句式以及多义性等方面。为了有效处理这种模糊性&#xff0c;研究者们提出了多种方法和技术&#xff0c;以下是一些关键策略&#xff1a; 基于深度学习的方法 深度学…...

代码随想录刷题day16|(哈希表篇)349.两个数组的交集

目录 一、哈希表理论基础 二、集合set在哈希法中的应用 三、相关算法题目 四、相关知识点 1.set集合特点和常用方法 1.1 set集合概述 1.2 set集合特点 1.3 常用方法 2.set集合转换成数组 法1&#xff1a;另新建一个数组 法2&#xff1a;将结果集合转为数组 ▲ 3.数组…...

浅谈Redis

2007 年&#xff0c;一位程序员和朋友一起创建了一个网站。为了解决这个网站的负载问题&#xff0c;他自己定制了一个数据库。于2009 年开发&#xff0c;称之为Redis。这位意大利程序员是萨尔瓦托勒桑菲利波(Salvatore Sanfilippo)&#xff0c;他被称为Redis之父&#xff0c;更…...

整数的个数(信息学奥赛一本通-1067)

【题目描述】 给定k(1<k<100)个正整数&#xff0c;其中每个数都是大于等于1&#xff0c;小于等于10的数。写程序计算给定的k个正整数中&#xff0c;1&#xff0c;5和10出现的次数。 【输入】 输入有两行&#xff1a;第一行包含一个正整数k&#xff0c;第二行包含k个正整数…...

macos的图标过大,这是因为有自己的设计规范

苹果官方链接&#xff1a;App 图标 | Apple Developer Documentation 这个在官方文档里有说明&#xff0c;并且提供了sketch 和 ps 的模板。 figma还提供了模板&#xff1a; Figma...

C++17 命名空间的新特性:简化与优化的典范

文章目录 1. 简化的嵌套命名空间1.1 背景与问题1.2 C17的解决方案1.3 实际应用场景1.4 注意事项 2. 声明多个名称的using声明2.1 背景与问题2.2 C17的解决方案2.3 实际应用场景2.4 注意事项 3. 属性命名空间的简化3.1 背景与问题3.2 C17的解决方案3.3 实际应用场景3.4 注意事项…...

使用python-docx包进行多文件word文字、字符批量替换

1、首先下载pycharm。 2、改为中文。 3、安装python-docx包。 搜索包名字&#xff0c;安装。 4、新建py文件&#xff0c;写程序。 from docx import Documentdef replace1(array1):# 替换词典&#xff08;标签值按实际情况修改&#xff09;dic {替换词1: array1[0], 替换…...

模块初阶学习

当我们在过去想要实现一个功能时&#xff0c;例如Swap交换函数时&#xff0c;我们需要不断考虑参数的正确与否。如果是在c语言&#xff0c;我们还需要不断更改函数名字&#xff0c;以防止函数名重复。在c我们可以通过函数名重载解决这个问题&#xff0c;但还是有一些小问题&…...

华为 Ascend 平台 YOLOv5 目标检测推理教程

1. 背景介绍 随着人工智能技术的快速发展&#xff0c;目标检测在智能安防、自动驾驶、工业检测等领域中扮演了重要角色。YOLOv5 是一种高效的目标检测模型&#xff0c;凭借其速度和精度的平衡广受欢迎。 华为 Ascend 推理框架&#xff08;ACL&#xff09;是 Ascend CANN 软件…...

16.好数python解法——2024年省赛蓝桥杯真题

问题描述 一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位…)上的数字是奇数,偶数位(十位、千位、十万位…)上的数字是偶数,我们就称之为“好数”。 给定一个正整数N,请计算从1到N一共有多少个好数。 输入格式 一个整数N。 输出格式 一个整数代表答案。 样例输入 1 …...

在WSL使用gnome终端

默认在windows11环境下使用WSL会打开windows终端&#xff0c;如果想要使用gnome终端可以进行如下操作 确保 WSLg 已启用&#xff1a; WSLg 默认在 Windows 11 和最新版本的 WSL 2 中启用。 检查 WSL 版本&#xff1a; wsl --list --verbose 如果未启用 WSLg&#xff0c;请更…...

评估篇| 大模型评测综述

在传统的自然语言任务下,如分类等,经常会用精确率、F1等指标,来评测模型的好坏。随着大模型技术研究的快速发展,以往的指标,对于大模型评估显得过于单薄。如何准确地评估大语言模型在不同维度的能力水平,已经成为当前研究的热点问题。为了全面考察大语言模型的有效性,研…...

Ubuntu下载zenodo文件Ubuntu download zenodo

一般数据集文件会比较大&#xff0c;直接下载单个压缩包很慢。可以使用代码多线程下载小文件。 环境 Ubuntu22.04 示例代码 pip3 install zenodo_get zenodo_get https://zenodo.org/records/13715870参考 https://github.com/dvolgyes/zenodo_get...

OpenHarmony 5.0.2 Release来了!

版本概述 OpenHarmony 5.0.2 Release版本对标准系统的能力进行持续完善&#xff0c;以快速迭代的方式推出API 14&#xff0c;相比5.0.1 Release版本&#xff0c;重点做出了如下特性新增或增强&#xff1a; 进一步增强ArkUI、图形图像的能力&#xff0c;提供更多组件的高级属性…...

蓝桥杯3519 填充 | 分类讨论

题目传送门 很简单&#xff0c;遍历一次字符串&#xff0c;将‘?’作为0或1处理&#xff0c;发现00和11统计次数即可。 s str(input()) cnt 0 arr [00, 11, 0?, ?0, 1?, ?1, ??] i0 while i < len(s)-1:if s[i:(i2)] in arr:i 2cnt 1else:i 1 print(cnt)END✨...

均值(信息学奥赛一本通-1060)

【题目描述】 给出一组样本数据&#xff0c;包含n个浮点数&#xff0c;计算其均值&#xff0c;精确到小数点后4位。 【输入】 输入有两行&#xff0c;第一行包含一个整数n&#xff08;n小于100&#xff09;&#xff0c;代表样本容量&#xff1b;第二行包含n个绝对值不超过1000的…...

Windows Docker Desktop安装及使用 Docker 运行 MySQL

Docker Desktop是Docker的官方桌面版&#xff0c;专为Mac和Windows用户设计&#xff0c;提供了一个简单易用的界面来管理和运行Docker容器。它集成了Docker引擎&#xff0c;为开发人员提供了一个快速、可靠、可扩展的方式来构建、运行和管理应用。DockerDesktop的优势在于&…...

关于使用微服务的注意要点总结

一、防止过度设计 微服务的拆分一定要结合团队人员规模来考虑&#xff0c;笔者就曾遇到过一个公司的项目&#xff0c;是从外部采购回来的&#xff0c;微服务划分为十几个应用&#xff0c;我们在此项目基础上进行自行维护和扩展。由于公司业务规模不大&#xff0c;而且二次开发的…...

对于RocksDB和LSM Tree的一些理解

LSM Tree的读写过程 HBase、LevelDB&#xff0c;rocksDB&#xff08;是一个引擎&#xff09;底层的数据结构是LSM Tree适合写多读少的场景&#xff0c;都是追加写入内存中的MemTable&#xff0c;写入一条删除&#xff08;或修改&#xff09;标记&#xff0c;而不用去访问实际的…...

Pyecharts之特殊图表的独特展示

在数据可视化的世界里&#xff0c;除了常见的柱状图、折线图、饼图等&#xff0c;还有一些特殊的图表可以为我们带来独特的展示效果&#xff0c;帮助我们以更有趣、更直观的方式呈现数据。Pyecharts 为我们提供了多种特殊图表的绘制功能&#xff0c;本文将介绍象形图、水球图和…...

【Uniapp-Vue3】动态设置页面导航条的样式

1. 动态修改导航条标题 uni.setNavigationBarTitle({ title:"标题名称" }) 点击修改以后顶部导航栏的标题会从“主页”变为“动态标题” 2. 动态修改导航条颜色 uni.setNavigationBarColor({ backgroundColor:"颜色" }) 3. 动态添加导航加载动画 // 添加加…...

图像处理算法研究的程序框架

目录 1 程序框架简介 2 C#图像读取、显示、保存模块 3 C动态库图像算法模块 4 C#调用C动态库 5 演示Demo 5.1 开发环境 5.2 功能介绍 5.3 下载地址 参考 1 程序框架简介 一个图像处理算法研究的常用程序逻辑框架&#xff0c;如下图所示 在该框架中&#xff0c;将图像处…...

c语言操作符(详细讲解)

目录 前言 一、算术操作符 一元操作符&#xff1a; 二元操作符&#xff1a; 二、赋值操作符 代码例子&#xff1a; 三、比较操作符 相等与不相等比较操作符&#xff1a; 大于和小于比较操作符&#xff1a; 大于等于和小于等于比较操作符&#xff1a; 四、逻辑操作符 逻辑与&…...

神经网络|(四)概率论基础知识-古典概型

【1】引言 前序学习了线性回归的基础知识&#xff0c;了解到最小二乘法可以做线性回归分析&#xff0c;但为何最小二乘法如此准确&#xff0c;这需要从概率论的角度给出依据。 因此从本文起&#xff0c;需要花一段时间来回顾概率论的基础知识。 【2】古典概型 古典概型是我…...

省市区三级联动

引言 在网页中&#xff0c;经常会遇到需要用户选择地区的场景&#xff0c;如注册表单、地址填写等。为了提供更好的用户体验&#xff0c;我们可以实现一个三级联动的地区选择器&#xff0c;让用户依次选择省份、城市和地区。 效果展示&#xff1a; 只有先选择省份后才可以选择…...

阿里云服务器部署windows随手笔记(Vue+SpringBoot)

服务器管理 创建管理实例 阿里云登录 - 欢迎登录阿里云&#xff0c;安全稳定的云计算服务平台 注意&#xff1a;需要开放端口&#xff1a; 点击实例ID/名称——安全组——安全组列表——管理规则—— 安全组详情——入方向——手动添加端口号&#xff08;例如目的8080&…...

79,【3】BUUCTF WEB [GXYCTF2019]BabysqliV3.0

进入靶场 现在做多了其他类型&#xff0c;老喜欢这个页面了&#xff0c;老朋友admin password 老规矩&#xff0c;桌面有啥就传啥 第一次点击上传什么都不显示 点了两次就有下面开头的那段话了 他在最后还偷偷骂了一句 确实连不上 再回顾一下题目 buuctf打不开了 只能看别人…...

【问题】Chrome安装不受支持的扩展 解决方案

此扩展程序已停用&#xff0c;因为它已不再受支持 Chromium 建议您移除它。详细了解受支持的扩展程序 此扩展程序已停用&#xff0c;因为它已不再受支持 详情移除 解决 1. 解压扩展 2.打开manifest.json 3.修改版本 将 manifest_version 改为3及以上 {"manifest_ver…...

【AI日记】25.01.25

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】 AI kaggle 比赛&#xff1a;Forecasting Sticker Sales 读书 书名&#xff1a;法治的细节 律己 AI&#xff1a;8 小时&#xff0c;良作息&#xff1a;00:30-8:30&#xff0c; 良短视频&…...

C语言程序设计:算法程序的灵魂

文章目录 C语言程序设计&#xff1a;算法程序的灵魂算法数据结构程序数据结构算法数值运算算法非数值运算算法 简单的算法举例【例2.1】求12345【例2.2】有50个学生&#xff0c;要求输出成绩在80分以上的学生的学号和成绩 简单的算法举例【例2.3】判定2000—2500年中的每一年是…...

jupyter配置说明

使用以下命令修改jupyter的配置文件参数&#xff1a; vim /root/.jupyter/jupyter_lab_config.py #这里填写远程访问的IP名&#xff0c;填*则默认是主机IP名 c.ServerApp.ip * # 这里的密码填写上面生成的密钥 c.ServerApp.password ************************************…...

医学图像分割 sliver07_肝脏数据集处理

医学图像分割 sliver07_肝脏数据集处理 先简单介绍一下sliver07 数据集 Sliver07 数据集 Sliver07 (Segmentation of the Liver Competition 2007) 是由 MICCAI&#xff08;医学图像计算与计算机辅助干预学会&#xff09;组织的经典医学图像分割数据集&#xff0c;主要用于肝…...

1.25寒假作业

web&#xff1a;[UUCTF 2022 新生赛]ez_rce 打开环境&#xff0c;先理解代码&#xff0c;注重代码审计的能力 定义以get传参的方式传参code函数&#xff0c;所以后面我们肯定要以’code...‘的方式去实现操作&#xff0c;后面禁用了一系列的字符&#xff0c;包括执行函数和一些…...

gorm中关于事务的一些东西

对于赶时间friends,可以只看每个问题的前几点&#xff0c;不用看后面的代码示例&#xff01;&#xff01;&#xff01; 一. tx : db.Begin()开启事务后&#xff0c;怎么结束或者是关闭事务&#xff0c;是通过tx.Rollback()还是tx.Commit()&#xff1f; 在 GORM 中&#xff0c…...

【Flask】在Flask应用中使用Flask-Limiter进行简单CC攻击防御

前提条件 已经有一个Flask应用。已经安装了Flask和redis服务。 步骤1&#xff1a;安装Redis和Flask-Limiter 首先&#xff0c;需要安装redis和Flask-Limiter库。推荐在生产环境中使用Redis存储限流信息。 pip install redis Flask-Limiter Flask-Limiter会通过redis存储限…...

竞赛算法总结

滑动窗口 1. 数据规模通常是10的5次方 2. 通常用于与字串相关的问题 3. 通常与哈希表配合 查看当前元素的状态 蓝桥_15. 挑选子串-CSDN博客 蓝桥_全部都有的子序列-CSDN博客 ai总结: 滑动窗口算法虽然很强大,但它的解题思路和实现上也有一些关键点可以注意。以下是一…...

记交叉编译asio_dtls过程

虽然编译成功了&#xff0c;但是还是有一些不妥的地方&#xff0c;参考一下就行了。 比如库的版本选择就有待商榷&#xff0c;我这里不是按照项目作者的要求严格用对应的版本编译的&#xff0c;这里也可以注意一下。 编译依赖库asio 下载地址, 更正一下&#xff0c;我其实用…...

【PyCharm】将包含多个参数的 shell 脚本配置到执行文件来调试 Python 程序

要配置 PyCharm 以使用包含多个参数的 shell 脚本&#xff08;如 run.sh&#xff09;来调试 Python 程序&#xff0c;您可以按照以下步骤操作&#xff1a; 创建一个新的运行/调试配置&#xff1a; 在 PyCharm 中&#xff0c;点击“运行”菜单旁边的齿轮图标&#xff0c;选择“…...

PID如何调试,如何配置P,I,D值,如何适配pwm的定时器配置,如何给小车配电源

首先你要搞清楚PID公式原理 PID算法解析PID算法解析_pid滤波算法-CSDN博客 然后你要明白调试原理 首先要确定一个电源 电源决定了你后面调试时电机转动速度大小和pwm占空比的关系&#xff0c;电源电压越大那要转到同一速度所需的占空比越小&#xff0c;反之电源电压越小那要…...

微服务学习-Nacos 注册中心实战

1. 注册中心的设计思路 1.1. 微服务为什么会用到注册中心&#xff1f; 服务与服务之间调用需要有服务发现功能&#xff1b;例如订单服务调用库存服务&#xff0c;库存服务如果有多个&#xff0c;订单服务到底调用那个库存服务呢&#xff08;负载均衡器&#xff09;&#xff0…...