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

day29图像处理OpenCV

文章目录

  • 一、图像预处理
    • 6 图像色彩空间转换
      • 6.3灰色/BGR/HSV相互转化
    • 7 彩图转灰图方法
      • 7.1 最大值法
      • 7.2 平均值法
      • 7.3 加权均值法
      • 7.4 案例
    • 8 图像二值化处理
      • 8.1 阈值法(type=cv2.THRESH_BINARY)
      • 8.2 反阈值法(THRESH_BINARY_INV)
      • 8.3 截断阈值法(THRESH_TRUNC)
      • 8.4 低阈值零处理(THRESH_TOZERO)
      • 8.5 超阈值零处理(THRESH_TOZERO_INV)
      • 8.6 OTSU阈值法
      • 8.7 自适应二值化
        • 1. 取均值
        • 2. 加权求和
      • 8.9 案例

一、图像预处理

6 图像色彩空间转换

6.3灰色/BGR/HSV相互转化

  • 语法
new_img = cv.cvtColor(image, 类型)
  • 参数:
    • image:图片
    • 类型
      • cv2.COLOR_BGR2GRAY:将 BGR 图像转换为灰度图像。
      • cv2.COLOR_BGR2HSV:将 BGR 图像转换为 HSV 图像。
      • cv2.COLOR_BGR2RGB:将 BGR 图像转换为 RGB 图像。

7 彩图转灰图方法

这种做法在图像处理和计算机视觉领域非常常见。

灰度图与彩色图最大的不同就是:彩色图是由R、G、B三个通道组成,而灰度图只有一个通道,也称为单通道图像,所以彩色图转成灰度图的过程本质上就是将R、G、B三通道合并成一个通道的过程。本实验中一共介绍了三种合并方法,分别是最大值法、平均值法以及加权均值法。

7.1 最大值法

对于彩色图像的每个像素,它会从R、G、B三个通道的值中选出最大的一个,并将其作为灰度图像中对应位置的像素值。

7.2 平均值法

对于彩色图像的每个像素,它会将R、G、B三个通道的像素值全部加起来,然后再除以三,得到的平均值就是灰度图像中对应位置的像素值。

7.3 加权均值法

对于彩色图像的每个像素,它会按照一定的权重去乘以每个通道的像素值,并将其相加,得到最后的值就是灰度图像中对应位置的像素值。本实验中,权重的比例为: R乘以0.299,G乘以0.587,B乘以0.114,这是经过大量实验得到的一个权重比例,也是一个比较常用的权重比例。

所使用的权重之和应该等于1。这是为了确保生成的灰度图像素值保持在合理的亮度范围内,并且不会因为权重的比例不当导致整体过亮或过暗。

7.4 案例

import cv2 as cv
import numpy as np
# 读取图片
pig = cv.imread("./images/pig.png")
h, w, _ = pig.shape # 宽,长
# 创建灰度图
gray = np.zeros((h, w), dtype=np.uint8)
# 权重
wr, wg, wb = 0.299, 0.587, 0.114
# 遍历像素点,转化生成灰图
for i in range(h):for j in range(w):# 取最大值gray[i, j] = np.max(cat[i, j])# 取平均值gray[i, j] = np.mean(pig[i, j])# 取加权平均值--int目的是因为cv2.imwrite()函数的参数要求是uint8类型gray[i, j] = int(wb * pig[i, j][0] + wg * pig[i, j][1] + wr * pig[i, j][2])
cv.imshow("gray", gray)
cv.imshow("pig", pig)
cv.waitKey(0)
cv.destroyAllWindows()

8 图像二值化处理

  • 目的:将某张图像的所有像素都改成 0 或 255 。

  • 二值化的过程:就是将一张灰度图上的像素根据某种规则修改为0和maxval(maxval表示最大值,一般为255,显示白色)两种像素值

  • 特点

    • 简便:降低计算量和计算需求,加快处理速度。
    • 节约资源:二值图像占用空间远小于彩色图。
    • 边缘检测:二值化常作为边缘检测的预处理步骤,因为简化后的图易于识别出轮廓和边界。
  • 全局阈值法。

  • _,binary = cv2.threshold(img,thresh,maxval,type)
    
    • img:输入图像,要进行二值化处理的灰度图。
    • thresh:设定的阈值。
    • maxval:最大像素值
    • type阈值处理的类型。(下面在介绍)
    • 返回值:
      • 第一个值:阈值
      • 第二个值:二值化后的图像矩阵。与输入图像尺寸相同。

8.1 阈值法(type=cv2.THRESH_BINARY)

  • 原理:每一个像素点与阈值判断,小于取0,大于阈值取阈值。

8.2 反阈值法(THRESH_BINARY_INV)

  • 原理:每一个像素点与阈值判断,小于阈值取阈值,大于阈值取0。

8.3 截断阈值法(THRESH_TRUNC)

  • 原理:每一个像素点与阈值判断,大于阈值修改为阈值,小于等于阈值的部分不变。

  • 当阈值为255时,图片不发生变化。

8.4 低阈值零处理(THRESH_TOZERO)

  • 原理:像素值小于等于阈值的部分被置为0(也就是黑色),大于阈值的部分不变。

8.5 超阈值零处理(THRESH_TOZERO_INV)

  • 原理:每个像素与阈值进行比较,像素值大于阈值的部分置为0(也就是黑色),像素值小于等于阈值的部分不变。

8.6 OTSU阈值法

  • 语法: type = cv2.THRESH_OTS
  • 结合了阈值法(默认)和反阈值法
    • type = cv2.THRESH_OTS + cv2.THRESH_BINARY
  • 自动计算中最佳的阈值,所以传入的阈值无效。

OTSU算法是通过一个值将这张图分前景色和背景色(也就是灰度图中小于这个值的是一类,大于这个值的是一类。例如,如果你设置阈值为128,则所有大于128的像素点可以被视作前景,而小于等于128的像素点则被视为背景。),通过统计学方法(最大类间方差)来验证该值的合理性,当根据该值进行分割时,使用最大类间方差计算得到的值最大时,该值就是二值化算法中所需要的阈值。通常该值是从灰度图中的最小值加1开始进行迭代计算,直到灰度图中的最大像素值减1,然后把得到的最大类间方差值进行比较,来得到二值化的阈值。以下是一些符号规定:

T:阈值(决定怎么分割前景和北京

N 0 N_{0} N0:前景像素点数

N 1 N_{1} N1:背景像素点数

ω 0 \omega_{0} ω0:前景的像素点数占整幅图像的比例

ω 1 \omega_{1} ω1:背景的像素点数占整幅图像的比例

U 0 \mathcal{U_{0}} U0:前景的平均像素值

U 1 \mathcal{U_{1}} U1:背景的平均像素值

U \mathcal{U} U:整幅图的平均像素值

rows×cols:图像的行数和列数

下面举个例子,有一张大小为4×4的图片,假设阈值T为1,那么:
在这里插入图片描述

也就是这张图片根据阈值1分为了前景(像素为2的部分)和背景(像素为0)的部分,并且计算出了OTSU算法所需要的各个数据,根据上面的数据,我们给出计算类间方差的公式:
g = ω 0 ( μ 0 − μ ) 2 + ω 1 ( μ 1 − μ ) 2 g=\omega_{0}(\mu_{0}-\mu)^{2}+\omega_{1}(\mu_{1}-\mu)^{2} g=ω0(μ0μ)2+ω1(μ1μ)2
g就是前景与背景两类之间的方差,这个值越大,说明前景和背景的差别就越大,效果就越好。OTSU算法就是在灰度图的像素值范围内遍历阈值T,使得g最大,基本上双峰图片的阈值T在两峰之间的谷底。

8.7 自适应二值化

与二值化算法相比,自适应二值化更加适合用在明暗分布不均的图片

  • 语法:只有一个返回值
new_img = cv2.adaptiveThreshold(image, 255, adaptiveMethod=cv2.ADAPTIVE_THRESH_MEAN_C, 
thresholdType=cv2.THRESH_BINARY, blockSize=7, c=10)

其中各个参数的含义如下:

  • maxval:最大阈值

  • adaptiveMethod:小区域阈值的计算方式:

  • ADAPTIVE_THRESH_MEAN_C:小区域内取均值(方法1)

  • ADAPTIVE_THRESH_GAUSSIAN_C:小区域内加权求和,权重是个高斯核(方法2)

  • thresholdType:二值化方法,只能使用THRESH_BINARY、THRESH_BINARY_INV,也就是阈值法和反阈值法

  • blockSize:处理核大小

  • c:最终阈值等于小区域计算出的阈值再减去此值

下面介绍一下这两种方法。

1. 取均值
  • 每一个像素点的计算过程:
    • 待计算像素点为中心,取3*3的区域(不够就使用边缘填充补齐)
    • 然后卷积核与区域一一对应相乘再累加 -C(如下黑图)
      在这里插入图片描述
2. 加权求和

具体原理,这里不需要理解。

某像素点的阈值计算过程如下图所示:

在这里插入图片描述

8.9 案例

import cv2 as cvimg = cv.imread('./images/flower.png')
img = cv.resize(img, (360, 360))
# 灰度化
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
# 阈值发
_, binary = cv.threshold(gray, 127,255,cv.THRESH_BINARY)
# 反阈值法
_, binary2 = cv.threshold(gray, 127,255,cv.THRESH_BINARY_INV)
# 截断阈值法
_, binary3 = cv.threshold(gray, 127,255,cv.THRESH_TRUNC)
# 低阈值0处理法
_, binary4 = cv.threshold(gray, 127,255,cv.THRESH_TOZERO)
# 高阈值0处理法
_, binary5 = cv.threshold(gray, 127,255,cv.THRESH_TOZERO_INV)
# OTSU阈值法
_, binary6 = cv.threshold(gray, 127,255,cv.THRESH_OTSU+cv.THRESH_BINARY)
# 自适应二值法-取均值
binary7 = cv.adaptiveThreshold(gray, 255, cv.ADAPTIVE_THRESH_MEAN_C, cv.THRESH_BINARY, 5, 2)
# 自适应二值法-加权平均值
binary8 = cv.adaptiveThreshold(gray, 255, cv.ADAPTIVE_THRESH_GAUSSIAN_C, cv.THRESH_BINARY, 5, 2)cv.imshow('binary', binary8)
cv.imshow('img', img)
cv.waitKey(0)
cv.destroyAllWindows()

相关文章:

day29图像处理OpenCV

文章目录 一、图像预处理6 图像色彩空间转换6.3灰色/BGR/HSV相互转化 7 彩图转灰图方法7.1 最大值法7.2 平均值法7.3 加权均值法7.4 案例 8 图像二值化处理8.1 阈值法(typecv2.THRESH_BINARY)8.2 反阈值法(THRESH_BINARY_INV)8.3 截断阈值法(THRESH_TRUNC)8.4 低阈值零处理(THR…...

Spring Boot 项目三种打印日志的方法详解。Logger,log,logger 解读。

目录 一. 打印日志的常见三种方法? 1.1 手动创建 Logger 对象(基于SLF4J API) 1.2 使用 Lombok 插件的 Slf4j 注解 1.3 使用 Spring 的 Log 接口(使用频率较低) 二. 常见的 Logger,logger,…...

KrillinAI:视频跨语言传播的一站式AI解决方案

引言 在全球内容创作领域,跨语言传播一直是内容创作者面临的巨大挑战。传统的视频本地化流程繁琐,涉及多个环节和工具,不仅耗时耗力,还常常面临质量不稳定的问题。随着大语言模型(LLM)技术的迅猛发展,一款名为Krillin…...

PDF处理控件Aspose.PDF指南:使用 C# 从 PDF 文档中删除页面

需要从 PDF 文档中删除特定页面?本快速指南将向您展示如何仅用几行代码删除不需要的页面。无论您是清理报告、跳过空白页,还是在共享前自定义文档,C# 都能让 PDF 操作变得简单高效。学习如何以编程方式从 PDF 文档中选择和删除特定页面&#…...

在 IntelliJ IDEA 中开发 Java Web 项目时,遇到包内明明存在某个类但类名仍然爆红(显示红色错误提示)

在 IntelliJ IDEA 中开发 Java Web 项目时,遇到包内明明存在某个类但类名仍然爆红(显示红色错误提示),而项目却能正常运行,重启 IDEA 后问题依旧,这通常是由以下原因及解决方法导致的: 1. 缓存…...

【4】k8s集群管理系列--harbor镜像仓库本地化搭建

一、harbor基本概念 ‌Harbor是一个由VMware开源的企业级Docker镜像仓库解决方案‌,旨在解决企业在容器化应用部署中的痛点,提供镜像存储、管理、安全和分发的全生命周期管理‌。Harbor扩展了Docker Registry,增加了企业级功能,如…...

Active Directory域服务管理与高级应用技术白皮书

目录 一、Active Directory核心架构解析 1.1 AD域服务核心组件 1.2 域功能级别演进 1.3 AD LDS应用场景 二、企业级域环境部署最佳实践 2.1 域控制器部署规划 2.2 高可用架构设计 2.3 客户端入域优化 三、高级域管理技术 3.1 精细化权限管理 3.2 组策略深度配置 3.3…...

OCP中的OCS operator介绍及应用示例

一、OCS operator介绍 在 Red Hat OpenShift Container Platform(OCP4.8版之前,包含4.8) 中,OCS Operator(OpenShift Container Storage Operator) 是用于在 OpenShift 集群中部署、配置和管理 OpenShift …...

Linux-服务器添加审计日志功能

#查看audit软件是否在运行(状态为active而且为绿色表示已经在运行) systemctl start auditd #如果没有在运行的话,查看是否被系统禁用 (audit为0表示被禁用) cat /proc/cmdline | grep -w "audit=0" #修改/etc/default/grub里面audit=0 改为audit=1 #更新GRUB…...

ARM Cortex-M中断处理全解析

今天我们聊一聊ARM Cortex-M中断处理。在嵌入式系统中,中断是实现实时响应的核心机制。想象一下,如果没有中断: 按键按下时,系统可能忙于其他任务而错过响应通信数据到来时,可能因为没及时处理而丢失定时任务难以精确…...

douyin_search_tool | 用python开发的抖音关键词搜索采集软件

本软件工具仅限于学术交流使用,严格遵循相关法律法规,符合平台内容合法性,禁止用于任何商业用途! 抖音作为国内颇受欢迎的短视频社交平台,汇聚了大量用户群体和活跃用户。分析平台上的热门视频可用于市场调研和竞品分析…...

基于FreeBSD的Unix服务器网络配置

Unix系统版本 FreeBSD-10.1-i386 网络配置 1.配置网络ip及网关 #编辑配置文件 ee /etc/rc.conf #参照如下内容设置 ifconfig_em0”inet 192.168.1.189 netmask 255.255.255.0” defaultrouter”192.168.1.1” #回到命令模式 esc #保存 a a 2.配置dns #编辑配置文件 ee /etc/…...

Margin和Padding在WPF和CSS中的不同

CSS和WPF中 margin 与 padding 在方向上的规定基本一致,但在使用场景和一些细节上有所不同。 CSS - 方向规定: margin 和 padding 属性可以分别指定上、右、下、左四个方向的值。例如 margin:10px 20px 30px 40px; 表示上外边距为10px、右外边距为20…...

JVM 概述

JVM概述 JVM的全为 Java Virtual Machine,但是目前的 JVM 已经不再与任何语言进行深度耦合了,其本质就是运行在计算机上的程序,职责是运行处理 Java 字节码文件。 JVM 功能 解释和运行 JVM 会对字节码文件中的指令,实时的解释为…...

基于django云平台的求职智能分析系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,招聘信息管理系统当然不能排除在外。求职智能分析系统是在实际应用和软件工程的开发原理之上,运用Python语言、爬虫技术以及Dj…...

在 Ubuntu 上通过 Docker 部署 Misskey 服务器

在这篇博客中,我们将探讨如何在 Ubuntu 上通过 Docker 部署 Misskey 服务器。Misskey 是一个开源的社交网络平台,支持丰富的社交功能,适合个人和小型社群使用。而 Docker 则是一个便捷的容器化平台,允许开发者轻松地打包、发布和运…...

Pytorch 第十五回:神经网络编码器——GAN生成对抗网络

Pytorch 第十五回:神经网络编码器——GAN生成对抗网络 本次开启深度学习第十五回,基于Pytorch的神经网络编码器。本回分享的是GAN生成对抗网络。在本回中,通过minist数据集来分享如何建立一个GAN生成对抗网络。接下来给大家分享具体思路。 本…...

gitlab如何查看分支的创建时间

在 GitLab 上查看分支创建时间,常规的界面不会直接显示,但可以通过以下几种方法查到准确时间: 方法一:通过 GitLab Web 界面查看首次提交时间(近似) 打开你的项目仓库。点击左侧的「Repository&#xff08…...

centos时间不正确解决

检查当前系统时间 date如果时间明显不正确,可以进一步检查硬件时钟(BIOS 时间): bash复制代码hwclock --show同步时间(推荐方式) 为了确保系统时间准确,建议使用 NTP(网络时间协议…...

ubuntu启动 Google Chrome 时默认使用中文界面,设置一个永久的启动方式

方法 :通过桌面快捷方式设置 编辑 Chrome 的桌面快捷方式: 找到您的 Google Chrome 快捷方式文件。如果是通过菜单启动,通常会在以下路径找到与 Chrome 相关的 .desktop 文件: sudo vim /usr/share/applications/google-chrome.d…...

opencv腐蚀的操作过程

在腐蚀操作的详细流程中,遍历图像的过程如下: 初始化: 设置一个起始位置(通常从图像的左上角开始)。 准备好结构元素(structuring element),它是一个小的矩阵,大小通常是…...

Docker--Docker镜像原理

docker 是操作系统层的虚拟化,所以 docker 镜像的本质是在模拟操作系统。 联合文件系统(UnionFS) 联合文件系统(UnionFS) 是Docker镜像实现分层存储的核心技术,它通过将多个只读层(Image Laye…...

HL7消息编辑器的使用手册

REDISANT 提供互联网与物联网开发测试套件 # 互联网与中间件: Redis AssistantZooKeeper AssistantKafka AssistantRocketMQ AssistantRabbitMQ AssistantPulsar AssistantHBase AssistantNoSql AssistantEtcd AssistantGarnet Assistant 工业与物联网&#xff1…...

技术与情感交织的一生 (六)

目录 食色性也 Z 姐 Pizza “修罗场” 之战 大二 下 EP 混乱 危机 撤退 离别 初创 重逢 食色性也 美食、美器、美女。追求美好的事物是人的天性。八部众里,天众界:因修行,有美食而无美女;阿修罗界:因产力…...

AI搜索引擎的局限性

# 揭秘AI搜索引擎的局限性与深度爬取技巧 > 摘要:本文深入分析了基于关键词的AI搜索引擎局限性,探讨了深网内容难以被发现的原因,并提供了一系列实用技巧来提高信息获取的全面性。无论是开发者、研究人员还是普通用户,了解这些…...

IPD项目管理的“黄金三角“在2025年是否需要重构?

——技术革命下的组织进化与实践创新 一、时空背景:IPD黄金三角的底层逻辑与时代挑战 IPD(集成产品开发)管理体系自1998年引入中国以来,其"黄金三角"——跨职能团队协作、结构化流程体系、决策评审机制——始终是企业…...

Jarpress 开源项目重构公告

项目背景 经过长达三个月的技术攻坚,我们正式宣布完成对九年历史开源项目的全面重构升级!原项目基于JFina框架开发,现采用SpringBootMyBatis技术栈重构,正式更名为Jarpress。 架构升级 采用最小组件依赖实现,减少系…...

Redshift 2025.4.1 版本更新:多平台兼容性与功能修复

2025 年 4 月 10 日,Redshift 发布 2025.4.1 版本(2025.04),聚焦宿主软件兼容性提升与核心功能修复,具体更新如下: 各平台适配与优化 Maya/3ds Max/Blender:新增对 Maya 2026、3ds Max 2026、…...

使用crxjs插件编写浏览器扩展插件遇到的问题 Waiting for the extension service worker...

目前最新的vitejs/plugin-vue和crxjs/vite-plugin不兼容,在crxjs官网有写 修改插件版本如下: "devDependencies": {"crxjs/vite-plugin": "^1.0.14","vitejs/plugin-vue": "^2.3.4","vite"…...

数据库学习通期末复习一

🌟 各位看官好,我是maomi_9526! 🌍 种一棵树最好是十年前,其次是现在! 🚀 今天来学习C语言的相关知识。 👍 如果觉得这篇文章有帮助,欢迎您一键三连,分享给更…...

数据分析实战案例:使用 Pandas 和 Matplotlib 进行居民用水

原创 IT小本本 IT小本本 2025年04月15日 18:31 北京 本文将使用 Matplotlib 及 Seaborn 进行数据可视化。探索如何清理数据、计算月度用水量并生成有价值的统计图表,以便更好地理解居民的用水情况。 数据处理与清理 读取 Excel 文件 首先,我们使用 pan…...

生态环境影响评价全解析

生态环境影响评价的原则、方法、工作程序、指标选择、参数计算、模型模拟、报告编制 一 :生态环境影响评价的基本程序 生态环境影响评价的涵义、生态影响的类型;生态环境影响评价的原则、流程、等级确定及工作范围。 图1 空间尺度上长江对中华鲟的累积…...

【Netty篇】Netty的线程模型

目录 一、Netty 线程模型是啥?二、Netty 线程模型有啥作用?三、Netty 线程模型解决了什么问题?四、如何使用 Netty 线程模型?五、Netty 线程模型的优缺点?六、总结 🌟我的其他文章也讲解的比较有趣&#x1…...

PyTorch实现权重衰退:从零实现与简洁实现

一、权重衰退原理 权重衰退(L2正则化)通过向损失函数添加权重的L2范数惩罚项,防止模型过拟合。其损失函数形式为: 二、从零开始实现 1.1 导入库与数据生成 %matplotlib inline import torch from torch import nn from d2l imp…...

Webflux声明式http客户端:Spring6原生HttpExchange实现,彻底摒弃feign

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...

python的strip()函数用法; 字符串切片操作

python的strip()函数用法 目录 python的strip()函数用法代码整体功能概述代码详细解释1. `answer["output_text"]`2. `.strip()`3. `final_answer = ...`字符串切片操作:answer[start_index + len("Helpful Answer:"):].strip()整体功能概述代码详细解释1…...

多模态大语言模型arxiv论文略读(二十一)

EgoPlan-Bench: Benchmarking Multimodal Large Language Models for Human-Level Planning ➡️ 论文标题:EgoPlan-Bench: Benchmarking Multimodal Large Language Models for Human-Level Planning ➡️ 论文作者:Yi Chen, Yuying Ge, Yixiao Ge, Mi…...

MCP学习资料

Anthropic 官方:https://modelcontextprotocol.io/introduction 中文站:https://mcpcn.com/docs/examples/...

《Training Language Models to Self-Correct via Reinforcement Learning》全文翻译

《Training Language Models to Self-Correct via Reinforcement Learning》 通过强化学习训练语言模型实现自我修正 Aviral Kumar ∗ , 1 { }^{\\*, 1} ∗,1, Vincent Zhuang ∗ , 1 { }^{\\*, 1} ∗,1, Rishabh Agarwal ∗ , 1 { }^{\\*}, 1 ∗,1, Yi Su ∗ , 1 { }^…...

Rust 之五 所有权、.. 和 _ 语法、引用和切片、Vec<T>、HashMap<K, V>

概述 Rust 的基本语法对于从事底层 C/C 开发的人来说多少有些难以理解,虽然官方有详细的文档来介绍,不过内容是相当的多,看起来也费劲。本文通过将每个知识点简化为 一个 DEMO 每种特性各用一句话描述的形式来简化学习过程,提高学…...

如何运行Vue 3 + Tauri + Rust 前端项目

Vue 3 Tauri Rust 前端项目运行需要安装以下工具和依赖: 1. 基本开发工具 Node.js (建议 LTS 版本) - 用于运行前端构建工具 包含 npm 或 yarn 包管理器下载地址 Rust 工具链 - Tauri 基于 Rust 构建 通过 rustup 安装安装命令: curl --proto https --tlsv1.2 -…...

Nature图形复现—Origin绘制顶刊水准的多组柱状图

多组柱状图(也称分组柱状图或簇状柱状图)是一种数据可视化图形,用于同时展示多个组别在不同子类别下的数据对比。其核心特点是通过并列的柱子将不同组别的数据排列在同一子类别下,便于直观比较。 本期教程以2022年发表于Nature的文…...

空格键会提交表单吗?HTML与JavaScript中的行为解析

在网页开发中,理解用户交互细节对于提供流畅的用户体验至关重要。一个常见的问题是:空格键是否会触发表单提交?本文将通过一个简单的示例解释这一行为,并探讨如何使用HTML和JavaScript来定制这种交互。 示例概览 考虑以下HTML代…...

详解@JsonFormat和@DateTimeFormat注解:处理日期格式化的利器

在Java开发中,尤其是Spring和Spring Boot项目中,日期时间类型(如Date、LocalDateTime等)的格式化问题经常困扰开发者。例如,前端传递的日期字符串如何转换为后端对象?后端返回的日期对象如何按指定格式序列化?这时候,@JsonFormat和@DateTimeFormat两个注解可以轻松解决…...

python-各种文件(txt,xls,csv,sql,二进制文件)读写操作、文件类型转换、数据分析代码讲解

1.文件txt读写标准用法 1.1写入文件 要读取文件,首先得使用 open() 函数打开文件。 file open(file_path, moder, encodingNone) file_path:文件的路径,可以是绝对路径或者相对路径。mode:文件打开模式,r 代表以…...

Python(16)Python文件操作终极指南:安全读写与高效处理实践

目录 背景介绍一、文件操作基础架构1. 文件打开模式详解 二、文件读取全攻略1. 基础读取方法2. 大文件处理方案3. 定位与截断 三、文件写入进阶技巧1. 基础写入操作2. 缓冲控制与实时写入 四、with上下文原理剖析1. 上下文管理协议2. 多文件同时操作 五、综合实战案例1. 加密文…...

Maven相关名词及相关配置

1、相关名词 1 Project: 任何你想build的事物,maven都可以认为他们是工程,这些工程被定义为工程对象模型(POM:Project Object Model)一个工程可以依赖其他的工程,一个工程也可以有多个子工程构成。 2 POM: 就是xml文件…...

【自动化测试】如何获取cookie,跳过登录的简单操作

前言 🌟🌟本期讲解关于自动化测试函数相关知识介绍~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 你的点赞就是小编不断更新的最大动力 🎆那么废话…...

登录校验:保障系统安全访问的关键技术解析

摘要:本文围绕Tlias智能学习辅助系统的登录校验功能展开,深入剖析了实现登录校验的必要性,介绍了会话技术和统一拦截技术等关键实现思路,并对Cookie、Session和令牌技术三种会话跟踪方案进行了详细对比,旨在为系统的安…...

数据库案例1--视图和索引

以下是一个关于数据库视图和索引的高级使用教程,结合实际案例进行讲解。我们将使用一个电商系统的数据库作为示例,展示如何创建和优化视图,以及如何通过索引提高查询性能。 案例背景 假设我们有一个电商系统,包含以下表&#xf…...