OpenCV相关函数
一、Sobel算子函数 (cv2.Sobel)
功能
Sobel算子是一个梯度算子,用于边缘检测。通过计算图像中像素的梯度,Sobel算子可以检测出水平和垂直方向上的边缘。
参数
src
:输入图像。
ddepth
:输出图像的深度(如cv2.CV_8U
, cv2.CV_64F
)。一般为cv2.CV_8U
(8位无符号整数)或cv2.CV_64F
(64位浮动数)。
dx
:计算导数的x方向阶数,dx=1
表示计算x方向的导数,dx=0
表示不计算x方向的导数。
dy
:计算导数的y方向阶数,dy=1
表示计算y方向的导数,dy=0
表示不计算y方向的导数。
ksize
:Sobel算子的大小,通常为3、5、7等奇数。ksize=3
通常效果很好。
scale
:缩放导数的比例因子。通常设置为1。
delta
:加到结果上的值,默认0。
borderType
:边界的处理方式,默认是cv2.BORDER_DEFAULT
。
返回值
返回的是处理后的图像,梯度图像,表示图像在水平方向或垂直方向上的变化。
应用
import cv2# 读取图片文件
img = cv2.imread('./shudu.png')# 对图片进行缩放,这里缩小到原图的一半
img = cv2.resize(img,(0,0),fx=0.5,fy=0.5)# 使用Sobel算子对图片进行边缘检测,这里是对y方向的梯度计算
img_sobel = cv2.Sobel(img,-1,0,1,ksize=3)# 使用Sobel算子对图片进行边缘检测,这里是对x方向的梯度计算
img_sobel_2 = cv2.Sobel(img,-1,1,0,ksize=3)# 显示原图
cv2.imshow('img',img)
# 显示对y方向梯度计算后的图片
cv2.imshow('img_sobel',img_sobel)
# 显示对x方向梯度计算后的图片
cv2.imshow('img_sobel_2',img_sobel_2)# 等待按键按下,用于让窗口持续显示
cv2.waitKey(0)
二、Laplacian算子函数 (cv2.Laplacian)
功能
Laplacian算子是一个二阶导数算子,用于检测图像中的边缘。它通过计算图像像素的二阶导数来检测边缘,能够检测到边缘的变化,但容易受噪声影响。
参数
src
:输入图像。
ddepth
:输出图像的深度,通常为cv2.CV_8U
或cv2.CV_64F
。
ksize
:Laplacian算子的大小,常为3或5。
scale
:缩放因子。
delta
:加到结果上的值。
borderType
:边界处理方式。
返回值
返回的是经过Laplacian滤波的图像,表示图像中的边缘。
应用
# 导入OpenCV库,用于图像处理
import cv2# 读取本地图片文件'shudu.png',并加载到内存中
img = cv2.imread('./shudu.png')# 使用Laplacian函数对图像进行边缘检测,ksize参数指定内核大小为5
# 此处进行边缘检测是为了识别图像中对象的边界,使用Laplacian算子可以增强图像中的高频部分
img_lap = cv2.Laplacian(img,0,ksize=5)# 显示原始图像,以便与处理后的图像进行对比
cv2.imshow('img',img)
# 显示经过Laplacian边缘检测处理后的图像
cv2.imshow('img_lap',img_lap)# 程序等待任意按键被按下后,继续执行下一行代码
# 此处的作用是确保图像窗口在屏幕上保持显示,直到用户进行交互
cv2.waitKey(0)
三、Canny算子函数 (cv2.Canny)
功能
Canny算子是一个多阶段边缘检测算法,首先通过高斯滤波去噪,再使用Sobel算子计算梯度,接着进行非最大值抑制和边缘连接,最终输出清晰的边缘。
参数
image
:输入图像(灰度图像)。
threshold1
:低阈值,用于边缘检测。
threshold2
:高阈值,用于边缘检测。
edges
:可选参数,用于输出边缘图像(默认为None
)。
apertureSize
:Sobel算子的大小,默认3。
L2gradient
:是否使用L2范数来计算图像梯度,True
表示使用,False
表示使用L1范数(默认值)。
返回值
返回的是检测到的边缘图像。
应用
import cv2# 读取图片文件
img = cv2.imread("./picture.png")# 调整图片大小,便于处理和显示
img = cv2.resize(img,(0,0),fx=0.5,fy=0.5)# 将图片转换为灰度图,便于后续的二值化处理
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)# 使用Otsu's thresholding方法对灰度图进行二值化处理
ret,img_binary = cv2.threshold(img_gray,127,255,cv2.THRESH_BINARY + cv2.THRESH_OTSU)# 对二值化的图片进行高斯模糊处理,减少噪声
img_blur = cv2.GaussianBlur(img_binary,(5,5),0)# 使用Canny算法对模糊处理后的图片进行边缘检测
img_canny = cv2.Canny(img_blur,30,70)# 显示二值化后的图片
cv2.imshow("img_binary",img_binary)
# 显示经过高斯模糊处理后的图片
cv2.imshow("img_blur",img_blur)
# 显示边缘检测后的图片
cv2.imshow("img_canny",img_canny)
# 等待用户按键,任意键按下后关闭所有图片窗口
cv2.waitKey(0)
四、findContours函数 (cv2.findContours)
功能
findContours
函数用于从二值图像中查找轮廓,轮廓是由图像中连续的像素点组成的边界。该函数在计算机视觉中广泛用于物体检测和识别。
参数
image
:输入图像,应该是二值图像(黑白图像)。
mode
:轮廓检索模式,常用值:
cv2.RETR_EXTERNAL
:仅检测外部轮廓。
cv2.RETR_LIST
:检测所有轮廓,返回每个轮廓的层次结构。
cv2.RETR_TREE
:检测所有轮廓,返回完整的层次结构
method
:轮廓近似方法,常用值:
cv2.CHAIN_APPROX_SIMPLE
:只保留轮廓的端点。
cv2.CHAIN_APPROX_NONE
:保存所有轮廓点。
contours
:轮廓的输出列表。
hierarchy
:轮廓的层次结构输出。
返回值
返回值是两个:
1、contours
:一个包含轮廓信息的列表。
2、hierarchy
:轮廓的层次结构。
应用
import cv2# 读取图片文件
img= cv2.imread('./card.png')# 对图片进行缩放,这里缩小到原图的一半
img = cv2.resize(img,(0,0),fx=0.5,fy=0.5)# 将图片转换为灰度图
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)# 使用二值化和Otsu算法处理灰度图,得到二值图
ret,img_binary = cv2.threshold(img_gray,127,255,cv2.THRESH_BINARY + cv2.THRESH_OTSU)# 找到二值图中的轮廓
contours, hierarchy = cv2.findContours(img_binary,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)# 复制原图
img_copy = img.copy()
# 在复制的图片上绘制找到的轮廓
img_draw = cv2.drawContours(img_copy,contours,-1,(0,0,255),3)# 显示原图
cv2.imshow('img',img)
# 显示绘制了轮廓的图片
cv2.imshow('img_draw',img_draw)
# 等待按键按下
cv2.waitKey(0)
五、drawContours函数 (cv2.drawContours)
功能
该函数用于在图像上绘制轮廓。可以指定绘制轮廓的颜色、线宽以及绘制的轮廓索引。
参数
image
:输入图像。
contours
:轮廓列表。
contourIdx
:轮廓的索引,-1表示绘制所有轮廓。
color
:轮廓的颜色。
thickness
:轮廓的线宽,-1
表示填充轮廓。
lineType
:线的类型,通常为cv2.LINE_8
。
hierarchy
:轮廓的层次结构。
maxLevel
:绘制的最大层次。
offset
:轮廓的偏移量。
返回值
无返回值,直接修改原图像。
应用
import cv2
import numpy as np# 读取图片并调整大小
img = cv2.imread('./color_1.png')
img = cv2.resize(img,(0,0),fx=0.5,fy=0.5)# 将图片从BGR颜色空间转换到HSV颜色空间
img_hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)# 定义黄色的HSV范围
yellow_min = np.array([26,43,46])
yellow_max = np.array([34,255,255])# 根据黄色的HSV范围创建掩码
img_color = cv2.inRange(img_hsv,yellow_min,yellow_max)# 使用中值滤波去除噪声
img_median_blur = cv2.medianBlur(img_color,5)# 获取椭圆形的结构元素
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(3,3))# 腐蚀图像以去除不需要的细节
img_erode = cv2.erode(img_median_blur,kernel)# 膨胀图像以恢复目标区域的大小
img_erode_dilate = cv2.dilate(img_erode,kernel)# 查找轮廓
contours,hierarchy = cv2.findContours(img_erode_dilate,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)# 复制原图以绘制轮廓
img_copy = img.copy()# 遍历所有轮廓,筛选出面积符合要求的轮廓并绘制
for i in contours:if cv2.contourArea(i)<200 or cv2.contourArea(i)>20000000:continuecv2.drawContours(img_copy,[i],0,(0,0,255),2)# 显示原图和绘制了轮廓的图像
cv2.imshow('img',img)
cv2.imshow('img_draw',img_copy)
cv2.waitKey(0)
六、透视变换函数 (cv2.getPerspectiveTransform 和 cv2.warpPerspective)
功能
透视变换用于将一个图像从一个平面投影到另一个平面,通常用来进行图像矫正或图像配准。cv2.getPerspectiveTransform
计算透视变换矩阵,cv2.warpPerspective
应用该矩阵。
参数
cv2.getPerspectiveTransform(src, dst)
:
src
:源图像中的四个点。
dst
:目标图像中的四个点。
cv2.warpPerspective(src, M, dsize)
:
src
:输入图像。
M
:透视变换矩阵。
dsize
:输出图像的大小。
应用
# 导入OpenCV和NumPy库
import cv2
import numpy as np# 读取图片文件
img = cv2.imread('./youhua.png')# 定义四个点,这些点是图片中需要被变换的区域的四个角点
points1 = np.float32([[174,143], # 左上角点[623,37], # 右上角点[90,492], # 左下角点[656,550] # 右下角点
])# 计算包围points1的最小外接矩形的四个角点
points2 = np.float32([[min(points1[:,0]),min(points1[:,1])], # 左上角点[max(points1[:,0]),min(points1[:,1])], # 右上角点[min(points1[:,0]),max(points1[:,1])], # 左下角点[max(points1[:,0]),max(points1[:,1])] # 右下角点
])# 使用getPerspectiveTransform函数计算透视变换矩阵M
M = cv2.getPerspectiveTransform(points1, points2)# 使用warpPerspective函数对图片进行透视变换
dst = cv2.warpPerspective(img, M, (img.shape[1], img.shape[0]))# 计算变换后图片的最小外接矩形的坐标
min_x, min_y = points2.min(axis=0).astype(int)
max_x, max_y = points2.max(axis=0).astype(int)# 根据最小外接矩形的坐标裁剪变换后的图片
cropped_dst = dst[min_y:max_y, min_x:max_x]# 显示原始图片
cv2.imshow('img', img)# 显示裁剪后的变换图片
cv2.imshow('cropped_dst', cropped_dst)# 等待按键,0表示无限等待直到有按键按下
cv2.waitKey(0)
七、举例轮廓的外接边界框,并对比说明
功能
外接边界框是包围轮廓的最小矩形,通常用于物体的定位和检测。
代码示例:
import cv2
import numpy as npimg = cv2.imread('./outline .png')img = cv2.resize(img,(0,0),fx = 0.5,fy = 0.5)img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)ret,img_binary = cv2.threshold(img_gray,127,255,cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)contours,h = cv2.findContours(img_binary,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)img_copy = img.copy()
cv2.drawContours(img_copy,contours,-1,(0,0,255),2)for i in contours:# 调用外接矩形函数,获取当前轮廓点的左上角的坐标(x,y) 和 宽(w) 和 高(h)x , y , w , h = cv2.boundingRect(i)# 画矩形cv2.rectangle(img_copy,(x,y),(x+w,y+h),(0,255,0),2)# 第二种:调用最小面积外界矩形函数,获取包含三个元素的元组(中心点坐标,长宽,旋转角度)# ((center_x, center_y), (width, height), angle)ret = cv2.minAreaRect(i)# 调用cv2.boxPoints(ret)可以获取旋转矩阵的四个顶点box = np.int32(cv2.boxPoints(ret))# 绘制轮廓cv2.drawContours(img_copy,[box],-1,(255,0,0),2)# 第三种:调用最小外接圆函数,获取圆心坐标(x,y) 和 半径(radius)(x,y),radius = cv2.minEnclosingCircle(i)(x,y,radius) = np.int32((x,y,radius))# 画圆cv2.circle(img_copy,(x,y),radius,(255,0,255),3)cv2.imshow('img',img)
cv2.imshow('img_copy',img_copy)
cv2.waitKey(0)
相关文章:
OpenCV相关函数
一、Sobel算子函数 (cv2.Sobel) 功能 Sobel算子是一个梯度算子,用于边缘检测。通过计算图像中像素的梯度,Sobel算子可以检测出水平和垂直方向上的边缘。 参数 src:输入图像。 ddepth:输出图像的深度(如cv2.CV_8U, cv…...
【理想汽车中科院】基于模仿学习的端到端自动驾驶数据缩放规律
论文: https://arxiv.org/pdf/2412.02689 项目: https://github.com/ucaszyp/Driving-Scaling-Law 0. 摘要 端到端自动驾驶范式因其可扩展性而最近吸引了大量关注。然而,现有方法受到现实世界数据规模有限的制约,这阻碍了对端到端自动驾驶相关扩展规律…...
重卡补能新未来:光储充换一体开启高效之路
《重卡补能新未来:光储充换一体开启高效之路》 一、光储充换一体重卡补能模式的兴起 重卡运输行业在电动化进程加速下迎来变革,光储超充快换一体化补能站成为新趋势。 随着国家 “双碳” 战略的持续推进,新能源汽车市场蓬勃发展,…...
Mybatis Plus 3.0 快速入门
1、简介 MyBatis-Plus (简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 2、创建并初始化数据库 2.1、创建数据库 mybatis_plus 2.2、创建 User 表 其表结构如下: idnameageemail1Jone18test1@baomidou.com2Jack…...
ABAP:MB51字段增强
MB51所对应的程序:RM07DOCS 1.定义增强字段:RM07DOCS_GENERATED中定义 2.取值:RM07DOCS中detail_list中加取值逻辑 也有对ITAB取值做调整的,但是要写很多处,直接这里取值就很简单。 3.展示字段:RM07DOCS中…...
nVisual 定制化APP打包流程
一、下载打包软件 HBuilder X 下载地址:https://dcloud.io/hbuilderx.html 安装:此软件为绿色软件,解压即可使用。进入目录,双击exe启动。 此软件需要注册,打开时会提供跳转链接,通过邮箱注册账号。 注册成功后&#…...
k8s的节点亲和性NodeAffinity
关键词: ① requiredDuringSchedulingIgnoredDuringExecution:表示强匹配,必须要满足 ② preferredDuringSchedulingIgnoredDuringExecution:表示弱匹配,尽可能满足,但不保证 示例: apiVersion: v1 kind:…...
比特币国家与企业机构“战略储备”潮起
100 万枚 BTC 的战略储备资产,是一个什么概念? 据世界黄金协会统计数据显示,截至 2024 年第三季度,美联储黄金储备总量达 8133.46 吨(约合 5300 亿美元),稳居全球首位。而 100 万枚 BTC 当前市…...
Vue生命周期钩子函数:深入解析与实践
作为高级Vue前端开发人员,对Vue组件的生命周期钩子函数有着深刻的理解是至关重要的。生命周期钩子函数是指在Vue组件的创建、更新、销毁等过程中,Vue自动调用的一系列方法。通过这些钩子函数,我们可以在组件的不同生命周期阶段执行特定的操作…...
mysql、postgresql、oceanbase调优
一、mysql 1、my.cnf [mysqld_safe] log-error=/data/mysql/log/mysql.log pid-file=/data/mysql/run/mysqld.pid[client] socket=/data/mysql/run/mysql.sock default-character-set=utf8[mysqld] basedir=/usr/local/mysql tmpdir=/data/mysql/tmp datadir=/data/mysql/dat…...
【Flux.jl】 卷积神经网络
Flux.jl 是包含卷积神经网络的, 但是官方API文件中没有给出一个完整的程序框架, 只是对所需神经元给了局部解释, 此外对 model-zoo 模型动物园中的案例没有及时跟着 Flux.jl 的版本更新, 也无法运行出来结果。 因此本文搭建了一个完整可训练的卷积神经网络。 Conv 卷积算子…...
数字证书管理工具 openssl keytool
OPENSSL 命令 openssl command [ command_opts ] [ command_args ] 常用command: version 用于查看版本信息 enc 用于加解密 ciphers 列出加密套件 genrsa 用于生成私钥 -des|-des3|-idea:用来加密私钥文件的三种对称加密算法。 rsa …...
notify和notifyAll
notify和notifyAll 简单来说: notify():只唤醒一个等待的线程,如果有多个线程在等待,那么被唤醒的线程是随机选择的。 notifyAll():唤醒在该对象监视器上等待的所有线程,但是这些被唤醒的线程仍然需要竞争…...
删除MySQL的多余实例步骤
删除 MySQL 的多余实例通常意味着我们希望卸载或停止某个 MySQL 服务器实例,并从系统中完全移除它。这通常涉及到几个步骤,包括但不限于停止服务、删除数据目录、卸载软件(如果适用)等。 1.基于 Linux 的系统上删除 MySQL 的多余…...
LDR6500应用:C转DP线材双向投屏开启全新体验
在当今这个科技日新月异、蓬勃发展的时代,高清视频传输以及显示技术已经深深融入到我们日常生活与工作的方方面面,其重要性不言而喻。不管是在商务场合的会议演示,还是教育领域的娱乐享受,以及充满激情的游戏竞技领域,…...
商业化大前端在性能优化领域的探索与实践
导读:在业务飞速发展的过程中,用户体验是必不可少的一个环节,而页面性能是直接影响用户体验的重要因素。当页面加载时间过长、交互操作不流畅时,意味着业务可能会出现转化率降低、用户流失等业务问题。在过去一年,为了…...
FinClip | 2024年11月产品大事记
FinClip 的使命是使您(业务专家和开发人员)能够通过小程序解决关键业务流程挑战,并完成数字化转型的相关操作。不妨让我们看看在11月的产品与市场发布亮点,看看是否有助于您实现目标。 产品方面的相关动向👇…...
EasyPlayer.js在同一个http的mp4视频流地址,浏览器可以播放,播放器中却播放不了
流媒体技术正站在数字化时代的前沿,随着互联网技术的不断进步和市场需求的日益增长,其发展前景显得尤为广阔。随着全球数字化转型的不断深入,流媒体行业将迎来更加繁荣的未来,成为信息传播和娱乐消费的主要渠道。 用户遇到在同一个…...
探索云原生安全解决方案的未来
我们是否充分意识到云端所面临的网络安全威胁? 在当今互联互通的世界中,维护安全的环境至关重要。云的出现扩大了潜在威胁的范围,因为它催生了机器身份(称为非人类身份 (NHI))及其秘密。随着组织越来越多地转向云原生…...
发愿和许愿的区别是什么?
在许多宗教和文化中,发愿和许愿都是人们表达内心愿望、祈求神灵保佑的重要方式。尽管这两个词在日常生活中经常被交替使用,但它们在含义和实践上存在一些重要的区别。本文就来详细说说发愿和许愿的区别,并提供相关的背景信息和建议。 1. 定义…...
【IntelliJ IDEA 集成工具】TalkX - AI编程助手
前言 在数字化时代,技术的迅猛发展给软件开发者带来了更多的挑战和机遇。为了提高技术开发群体在繁多项目中的编码效率和质量,他们需要一个强大而专业的工具来辅助开发过程,而正是为了满足这一需求,TalkX 应运而生。 一、概述 1…...
【故障处理--修改CI流水线】
背景:研发同事反映CI流水线卡顿严重,判断是移动云镜像仓库的带宽太小,故在公有云搭建一个harbor仓库,这就意味着CI流水线有些配置需要改动 1、CI流水线的介绍 helm-chart/pcas-appstore-hy存放的是chart包需要的文件 Dockerfile…...
Android 使用 Gson + OkHttp 实现 API 的常规使用(个人心得)
学习笔记 一、依赖和权限的添加 网络权限: 在 Android 中进行网络请求时,必须声明权限,确保应用具有访问互联网的能力。 <uses-permission android:name="android.permission.INTERNET"/> 依赖项: 确保在 build.gradle 中添加以下依赖: dependencies …...
MR30分布式 IO 模块:硅晶行业电池片导片机的智能 “心脏”
硅晶产业作为全球能源和电子领域的基石,其生产规模庞大且工艺复杂。从硅料的提纯、拉晶,到硅片的切割、电池片的制造,每一个环节都要求高精度与高稳定性。在电池片生产环节,导片机承担着硅片传输与定位的重要任务,其运…...
mysql高级篇 | 尚硅谷 | 第2章_数据库和文件系统的关系
二、数据库和文件系统的关系 文章目录 二、数据库和文件系统的关系1、查看默认数据库2、 数据库在文件系统中的表示3、表在文件系统中的表示①InnoDB存储引擎模式②表中数据和索引②MyISAM存储引擎模式 4、小结 1、查看默认数据库 查看一下在我的计算机上当前有哪些数据库&…...
React 生命周期
React 生命周期可以分为三个主要阶段:挂载(Mounting)、更新(Updating)和卸载(Unmounting) 挂载(Mounting) 当组件实例被创建并插入到 DOM 中时,会依次调用以…...
OpenCV--图像查找
OpenCV--图像查找 代码和笔记 代码和笔记 import cv2 import numpy as np""" 图像查找--特征匹配的应用,通过特征匹配和单应性矩阵 单应性变换:描述物体在世界坐标系(原图)和像素坐标系(对比图&#x…...
数据保护策略:如何保障重要信息的安全
一、什么是数据安全? 数据安全是保护数字信息免遭盗窃、未经授权的访问和恶意修改的过程。这是一个持续的过程,负责监督信息的收集、存储和传输。 机密性:保护数据免遭未授权方访问。 完整性:保护数据免遭未经授权的修改、损坏…...
AI生成图表化:深入探索Mermaid
引言 在使用生成式AI时,只要你提出让AI帮你生成mermaid图,AI的生成就会出现丰富的图形! 在现代文档编写中,图表的使用不仅能增强文档的可读性,还能更直观地表达复杂的概念和流程。Mermaid 作为一款开源的图表绘制工具…...
模型训练中梯度累积步数(gradient_accumulation_steps)的作用
模型训练中梯度累积步数(gradient_accumulation_steps)的作用 flyfish 在使用训练大模型时,TrainingArguments有一个参数梯度累积步数(gradient_accumulation_steps) from transformers import TrainingArguments梯…...
jenkins安装(jdk1.8已安装)
1. 下载对应jenkins版本 https://mirrors.jenkins.io/war/ 2. 上传至服务器目录并启动 mkdir -p /root/jenkins cd /root/jenkins 上传文件 启动:nohup java -jar jenkins.war --httpPort9090 &> jenkins.log & 访问:http://ip:9090 选…...
爬虫实战:获取1688接口数据全攻略
引言 在电商领域,数据的重要性不言而喻。1688作为中国领先的B2B电商平台,提供了海量的商品数据。通过爬虫技术获取这些数据,可以帮助企业进行市场分析、价格监控和供应链管理。本文将详细介绍如何使用Python爬虫技术合法合规地获取1688接口数…...
基于Mybatis,MybatisPlus实现数据库查询分页功能
基于Mybatis,MybatisPlus实现数据库查询分页功能 目录 基于Mybatis,MybatisPlus实现数据库查询分页功能使用Mybatis插件实现分页数据库准备分页插件配置和使用常用数据: 使用MybatisPlus插件实现分页数据库准备分页插件配置和使用自定义分页查…...
【C++】求第二大的数详细解析
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目描述💯输入描述💯解题思路分析1. 题目核心要求2. 代码实现与解析3. 核心逻辑逐步解析定义并初始化变量遍历并处理输入数据更新最大值与次大值输…...
Ubuntu18安装后基本配置操作
1. 关掉自动更新 不关掉自动更新,会将你的ubuntu系统更新到更高版本,一些配置就不能用了,所以要关掉自动更新。在“软件和更新”中将“自动检查更新”设置为从不。 2. ubuntu换国内源 参考链接换源 按照这个换源这个换源好使 ,…...
【Azure 架构师学习笔记】- Azure Function (1) --环境搭建和背景介绍
本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Function 】系列。 前言 随着无服务计算的兴起和大数据环境中的数据集成需求, 需要使用某些轻量级的服务,来实现一些简单操作。因此Azure Function就成了微软云上的一个必不可少的组成部分。 …...
【ubuntu】将Chroma配置为LINUX服务
Chroma是一个轻量级向量数据库。既然是数据库,那么我希望它是能够长时间运行。最直接的方式是配置为service服务。 可惜官方没有去提供配置为服务的办法,而鄙人对docker又不是特别感冒。所以自己研究了下chroma配置为服务的方式。 系统:ubu…...
Linux24.04 安装企业微信
今天工作需要把windows系统换成了linux,但是公司的沟通工具是企业微信。去企业微信官网看了,没有linux版本,只能想办法解决了,不然再换回去就太坑了。 方案 1、使用docker容器,2、使用deepin-wine 本人对docker不太熟…...
路由引入问题(双点双向路由回馈问题)
简介 总所周知,路由引入import又称路由重分发redistribute,为了解决不同路由协议进程间路由信息不互通而使用的技术,由于不同路由协议的算法、机制、开销等因素的差异,它们之间无法直接交换路由信息。因此,路由引入技…...
Redis 实现分布式锁
单实例条件下的分布式锁 -- 加锁操作 -- KEYS[1]: 锁的键(lock_key) -- ARGV[1]: 当前客户端的标识(client_id) -- ARGV[2]: 锁的过期时间(毫秒)if (redis.call(EXISTS, KEYS[1]) 0) then-- 如果锁不存在…...
Redis客户端(Jedis、RedisTemplate、Redisson)
1. 简介 Redis作为一个当下很火热的非关系型数据库,Java从业人员基本都离不开对Redis的使用。在Java程序中该数据库,需要借助于市面上的开源客户端,如Jedis、Spring Data Redis、Redisson,它们可以作为操作Redis非关系型数据库的桥…...
虚幻引擎内各个组件的关系
1. GameMode: 关系: GameMode 是游戏规则的制定者和管理者,GameState 则是游戏状态的记录者和同步者。GameMode 通常负责创建和初始化 GameState。 交互: GameMode 可以直接访问和修改 GameState 的属性,例如更新游戏分数、切换游戏阶段等。GameState 的变化会通过 GameMode …...
Python Flask Web框架快速入门
Flask 入门Demo Flask 开发环境搭建,执行如下指令: pip install flask# 第一节: Flask 快速入门from flask import Flask app Flask(__name__)app.route(/flask) def hello_flask():return Hello Flaskapp.run()核心代码剖析: 从flask包导…...
【java学习笔记】Set接口实现类-LinkedHashSet
一、LinkedHashSet的全面说明 (就是把数组不同位置的链表当成一个节点然后相连)...
阿里云ACP云计算模拟试题(附答案解析)
1、将基础设施作为服务的云计算服务类型是_____服务。 A.laas B.Paas C.SaaS D.Daas 答案:A 解析:基础设施即服务有时缩写为 IaaS,包含云 IT 的基本构建块,通常提供对联网功能、计算机(虚拟或专用硬件&#x…...
java 缓存篇2
缓存的部署方式 单机主从哨兵集群 特性主从(Master-Slave)哨兵(Sentinel)集群(Cluster)数据分片不支持不支持支持,基于 slot 进行水平分片高可用性部分支持(手动故障转移ÿ…...
12.11-12.12总结(约瑟夫问题 机器翻译 滑动窗口)
12.11 刷题 《算法竞赛》这本书看了很多了,但是题目没咋做,所以今天来刷一下题 P1996约瑟夫问题 还依稀记得大一的时候被约瑟夫支配的恐惧(哭),但是现在做就感觉很简单(虽然也敲了一会,今早感…...
Elasticsearch+Kibana+IK分词器+拼音分词器安装
目录 ES报错 Kibanaik分词器拼音分词器 安装都比较简单,可以参考这几篇博客 ES 如何在 Linux,MacOS 及 Windows 上进行安装 Elasticsearch 报错 ES启动报错error downloading geoip database [GeoLite2-ASN.mmdb] Kibana KIBANA的安装教程ÿ…...
2020 年“泰迪杯”数据分析职业技能大赛A 题教育平台的线上课程智能推荐策略
2020 年“泰迪杯”数据分析职业技能大赛A 题教育平台的线上课程智能推荐策略 完整代码请私聊 博主 一、 背景 近年来,随着互联网与通信技术的高速发展,学习资源的建设与共享呈现出新的发展趋势,各种网课、慕课、直播课等层出不穷,…...
运维面试题
1 deployment和statefulset区别 Kubernetes (k8s) 中的 Deployment 和 StatefulSet 是两种不同类型的控制器,用于管理应用的生命周期,但它们适用于不同的应用场景。以下是它们在存储、调度顺序和网络分配方面的区别: 存储 Deployment: 适用…...