Halcon 模糊圆边的找圆案例

Halcon 模糊圆边的找圆案例

基本思路

        1.将图像转成灰度图像

        2.再观察要找到的区域的灰度值变化,找到前景与背景的具体数值。

        3.根据找到的前景与背景的具体数值,增强图像对比度。(使图像变成黑白图片)

        4.使用灰度直图工具进行阈值分割,找到最佳的阈值

        5.使用connection算子进行区域分割。相连的区域联接,不相联的区域分离

        6.借助形状特征选择区域。新手可以使用特征直方图工具进行可视化的选择区域。

        7.可以对图像边缘进行一些简单的处理。

        8.获取选择区域的信息,如面积,坐标等信息

        9.根据已知的区域坐标信息,使用找圆工具进行处理,并获取圆区域的相关数据,如圆心坐标,轮廓等

 效果

原图

步骤分解

1.准备

*读图
read_image (OriImage, 'E:/机器视觉学习/海康视觉平台/二期VM视觉学习/二期VM视觉学习/机器视觉程序/标定相机找圆心和焊头修正相机找圆心之算法软件/标定相机找圆心和焊头修正相机找圆心之算法软件/03 标定相机找圆心/S2/1号机/2.bmp')
get_image_size (OriImage, Width, Height)
dev_open_window (0, 0, Width/5, Height/5, 'black', WindowHandle)

2.将图像转成灰度图像

*将图像转成灰度图像
rgb1_to_gray (OriImage, GrayImage1)

3.再观察要找到的区域的灰度值变化,找到前景与背景的具体数值。

观察到圆内的灰度值是4,圆外的值是65。

4.根据找到的前景与背景的具体数值,增强图像对比度。(使图像变成黑白图片)

*增强对比度
*输入原图像
*输出处理后的图像
*最小值
*最大值
Enhancement (GrayImage1, Image2, 5, 50)

效果

从图上看我们要找的圆的区域变黑了,这样特征就明显了。

5.使用灰度直图工具进行阈值分割,找到最佳的阈值

插入的代码

threshold (Image2, Regions, 0, 37)

6.使用connection算子进行区域分割。相连的区域联接,不相联的区域分离

connection(Regions, Seg)

7.借助形状特征选择区域。

        新手可以使用特征直方图工具进行可视化的选择区域。

*借助形状特征选择区域*Regions (输入参数)要检查的区域。*SelectedRegions (输出参数)满足条件的地区*Features 要检查的形状特征。        *Operation 个体特征的联动类型。默认值:'and' 值列表:'and', 'or'*Min 特征的下限或` min `。*Max 特征的上限或` max `。        
select_shape (Seg, selectHole, 'area', 'and', 620478, 1.30065e+006)

8.可以对图像边缘进行一些简单的处理。

*用圆形(3.5半径)结构元素【闭运算】closing_circle (selectHole, RegionDilation2, 4.5)

        9.获取选择区域的信息,如面积,坐标等信息

*区域和区域中心。*参数说明*Regions (input_object)  输入要检查(计算)的区域*Area (output_control)  输出面积*Row (output_control) 中心点的行坐标*Column (output_control) 中心点的列坐标area_center(RegionDilation2, sel_area, sel_row, sel_col)*设置显示的字体set_display_font (WindowHandle, 26, 'mono', 'true', 'false')disp_message (WindowHandle, '匹配坐标:'+sel_row+','+sel_col, 'window', 20, 20, 'green', 'true')*显示十字中心disp_cross (WindowHandle, sel_row, sel_col, 50, 10)

        10.根据已知的区域坐标信息,使用找圆工具进行处理,并获取圆区域的相关数据,如圆心坐

tuple_sort_index(sel_area, SortIndex)if (|SortIndex| > 0)select_obj(selectHole, sel_last, SortIndex[0]+1)fill_up(sel_last, sel_last)region_to_bin(sel_last, BinImage, 0, 255,  Width, Height)MetchedRow := sel_row[SortIndex[0]]MatchedColumn := sel_col[SortIndex[0]]*二维测量精定位圆的位置MetrologyParamNames := ['measure_transition', 'measure_select', 'min_score']MetrologyParamValues := ['positive', 'first', '0.6']*添加找圆工具create_metrology_model (MetrologyHandle)   set_metrology_model_param (MetrologyHandle, 'camera_param', [])set_metrology_model_image_size (MetrologyHandle, Width, Height)add_metrology_object_circle_measure (MetrologyHandle, sel_row, sel_col, ModelROIRadius, 70, 1, 1, 30, [], [], Index)*返回图像坐标中选定的计量对象的轮廓。
*参数说明
*Contour (输入参数)模型轮廓
*MetrologyHandle (输入参数)计量模型的句柄
*Index 计量对象的索引
*Resolution 相邻轮廓点之间的距离
get_metrology_object_model_contour(Contour, MetrologyHandle, 'all', 1.5)
*获取测量区域和计量模型的计量对象的边缘位置结果
*参数说明
*Contour (输入参数)模型轮廓
*MetrologyHandle (输入参数)计量模型的句柄
*Index 计量对象的索引
*Transition 选择亮/暗 或 暗/亮边缘。ALL全部, negative(白到黑),positive(黑到白)
*Row 测量边的行坐标
*Column 测量边的列坐标
get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row2, Column2)dev_set_color ('cyan')dev_display (Contours)
dev_display (Contour)apply_metrology_model (BinImage, MetrologyHandle)get_metrology_object_result (MetrologyHandle, 0, 'all', 'result_type', 'all_param', Parameter)get_metrology_object_result (MetrologyHandle, 0, 'all', 'result_type', 'radius', radius)*判断是否找圆成功if (|Parameter| > 0)ResultCenterRow := Parameter[0]ResultCenterColumn := Parameter[1]*获取圆的半径ResultRadius := Parameter[2]*为每个输入点生成一个十字形状的XLD轮廓。*gen_cross_contour_xld (Cross, Row2, Column2, 100, 0)*dev_set_color('red')*dev_display(Cross)*创建XLD轮廓对应于圆或圆弧。*gen_circle_contour_xld (ContCircle1, ResultCenterRow, ResultCenterColumn, ResultRadius, 0, 6.28318, 'positive', 1)*dev_set_color('green')*dev_display(ContCircle1)*获取计量模型的测量结果
*参数说明:
*(输出参数)MetrologyHandle 处理计量模型
*index 
*Instance 
*GenParamName ‘result_type’:
*对于圆,返回值是中心的坐标和圆的半径。顺序分别是[‘row’,‘column’,‘radius’]或 [‘x’,‘y’,‘radius’]
*对于椭圆,返回值是中心的坐标,长轴’phi’的方向,较大半轴’radius1’的长度,以及椭圆的较小半轴’radius2’的长度。
*顺序分别是[‘row’,‘column’,‘phi’,‘radius1’,‘radius2’]或 [‘x’,‘y’,‘phi’,‘radius1’,‘radius2’]
*对于一条线,返回该线的起点和终点。顺序是[‘row_begin’,‘column_begin’,‘row_end’,‘column_end’]
*或 [‘x_begin’,‘y_begin’,‘x_end’,‘y_end’]
*对于矩形,返回值是中心的坐标,主轴’phi’的方向,较大的半边’length1’的长度,以及矩形的较小半边’length2’的长度。
*顺序分别是[‘row’,‘column’,‘phi’,‘length1’,‘length2’]或 [‘x’,‘y’,‘phi’,‘length1’,‘length2’]
*GenParamValue
*Parameter
get_metrology_object_result(MetrologyHandle, 'all', 'all', 'result_type', 'all_param', Parameter)
*查询计量对象的结果轮廓
*参数说明
*Contour (输入参数)给定计量对象的结果轮廓
*MetrologyHandle (输入参数)计量模型的句柄
*Index (输入参数)计量对象的索引,想要第几个结果轮廓
*Instance 输入参数)计量对象的实例
*Resolution 相邻轮廓点之间的距离
get_metrology_object_result_contour (Contour1, MetrologyHandle, 'all', 'all', 1.5)
*fill_up(Contour1, Contour1circle)
dev_set_line_width(3)
dev_set_color('green')
dev_display(Contour1)disp_message (WindowHandle, '圆中心坐标:X:'+Parameter[0]+',Y:'+Parameter[1], 'window', 20, 20, 'red', 'true')ResultCenterColumn := Parameter[0]
ResultCenterRow := Parameter[1]
*清除模板
clear_metrology_model (MetrologyHandle)

完整代码

dev_close_window ()
********************变量定义********************
*搜索ROI
SearchROIRow1 := 405.341
SearchROIColumn1 := 1121.06
SearchROIRow2 := 3245.93
SearchROIColumn2 := 3676*圆形模板ROI
ModelROIRow := 1281.04
ModelROIColumn := 2422.51
ModelROIRadius := 468.297
DilationRadius := 50********************************************
* 第二种类型,圆的半径比第一种要大,11
SecondType := true
if (SecondType == true)ModelROIRadius := 560DilationRadius := 100
endif
Result := 'Pass'
*读图
read_image (OriImage, 'E:/机器视觉学习/海康视觉平台/二期VM视觉学习/二期VM视觉学习/机器视觉程序/标定相机找圆心和焊头修正相机找圆心之算法软件/标定相机找圆心和焊头修正相机找圆心之算法软件/03 标定相机找圆心/S2/1号机/1.bmp')
get_image_size (OriImage, Width, Height)
dev_open_window (0, 0, Width/5, Height/5, 'black', WindowHandle)
*将图像转成灰度图像
rgb1_to_gray (OriImage, GrayImage1)
*增强对比度
*输入原图像
*输出处理后的图像
*最小值
*最大值
Enhancement (GrayImage1, Image2, 5, 50)
*使用不同的掩码计算中值滤波器。*Image (输入参数)要过滤的图像。*ImageMedian (输出参数)过滤后的图像*MaskType 过滤掩码类型 值列表:'circle', 'square'*Radius 滤镜遮罩的半径*Margin 边界处理 默认值: 'mirrored' 建议值:` mirrored `, ` cyclic `, ` continue `, 0, 30, 60, 90, 120, 150, 180, 210, 240, 255*median_image (OriImage, Median, 'circle', 3, 'mirrored')*使用直方图确定的阈值分割图像。*auto_threshold (Median, Seg, 2.0)threshold (Image2, Regions, 0, 37)*threshold (Image2, Regions, 0, 129)*用圆形(2.5半径)结构元素【膨胀】*Radius : 圆形(2.5半径)*dilation_circle (Regions, RegionDilation2, 4.5)connection(Regions, Seg)*借助形状特征选择区域*Regions (输入参数)要检查的区域。*SelectedRegions (输出参数)满足条件的地区*Features 要检查的形状特征。        *Operation 个体特征的联动类型。默认值:'and' 值列表:'and', 'or'*Min 特征的下限或` min `。*Max 特征的上限或` max `。        select_shape (Seg, selectHole, 'area', 'and', 620478, 1.30065e+006)*select_shape(Seg, selectHole, ['width', 'height'], 'and', [ModelROIRadius*2- DilationRadius, ModelROIRadius*2- DilationRadius],\[ModelROIRadius*2+ DilationRadius, ModelROIRadius*2+ DilationRadius])  *用圆形(2.5半径)结构元素【膨胀】*Radius : 圆形(2.5半径)*dilation_circle (selectHole, RegionDilation2, 4.5)*用圆形(3.5半径)结构元素【闭运算】closing_circle (selectHole, RegionDilation2, 4.5)*区域和区域中心。*参数说明*Regions (input_object)  输入要检查(计算)的区域*Area (output_control)  输出面积*Row (output_control) 中心点的行坐标*Column (output_control) 中心点的列坐标area_center(RegionDilation2, sel_area, sel_row, sel_col)*设置显示的字体set_display_font (WindowHandle, 26, 'mono', 'true', 'false')disp_message (WindowHandle, '匹配坐标:'+sel_row+','+sel_col, 'window', 20, 20, 'green', 'true')*显示十字中心disp_cross (WindowHandle, sel_row, sel_col, 50, 10)tuple_sort_index(sel_area, SortIndex)if (|SortIndex| > 0)select_obj(selectHole, sel_last, SortIndex[0]+1)fill_up(sel_last, sel_last)region_to_bin(sel_last, BinImage, 0, 255,  Width, Height)MetchedRow := sel_row[SortIndex[0]]MatchedColumn := sel_col[SortIndex[0]]*二维测量精定位圆的位置MetrologyParamNames := ['measure_transition', 'measure_select', 'min_score']MetrologyParamValues := ['positive', 'first', '0.6']*添加找圆工具create_metrology_model (MetrologyHandle)   set_metrology_model_param (MetrologyHandle, 'camera_param', [])set_metrology_model_image_size (MetrologyHandle, Width, Height)add_metrology_object_circle_measure (MetrologyHandle, sel_row, sel_col, ModelROIRadius, 70, 1, 1, 30, [], [], Index)*返回图像坐标中选定的计量对象的轮廓。*参数说明*Contour (输入参数)模型轮廓*MetrologyHandle (输入参数)计量模型的句柄*Index 计量对象的索引*Resolution 相邻轮廓点之间的距离get_metrology_object_model_contour(Contour, MetrologyHandle, 'all', 1.5)*获取测量区域和计量模型的计量对象的边缘位置结果*参数说明*Contour (输入参数)模型轮廓*MetrologyHandle (输入参数)计量模型的句柄*Index 计量对象的索引*Transition 选择亮/暗 或 暗/亮边缘。ALL全部, negative(白到黑),positive(黑到白)*Row 测量边的行坐标*Column 测量边的列坐标get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row2, Column2)dev_set_color ('cyan')dev_display (Contours)dev_display (Contour)apply_metrology_model (BinImage, MetrologyHandle)get_metrology_object_result (MetrologyHandle, 0, 'all', 'result_type', 'all_param', Parameter)get_metrology_object_result (MetrologyHandle, 0, 'all', 'result_type', 'radius', radius)*判断是否找圆成功if (|Parameter| > 0)ResultCenterRow := Parameter[0]ResultCenterColumn := Parameter[1]*获取圆的半径ResultRadius := Parameter[2]*为每个输入点生成一个十字形状的XLD轮廓。*gen_cross_contour_xld (Cross, Row2, Column2, 100, 0)*dev_set_color('red')*dev_display(Cross)*创建XLD轮廓对应于圆或圆弧。*gen_circle_contour_xld (ContCircle1, ResultCenterRow, ResultCenterColumn, ResultRadius, 0, 6.28318, 'positive', 1)*dev_set_color('green')*dev_display(ContCircle1)*获取计量模型的测量结果*参数说明:*(输出参数)MetrologyHandle 处理计量模型*index *Instance *GenParamName ‘result_type’:*对于圆,返回值是中心的坐标和圆的半径。顺序分别是[‘row’,‘column’,‘radius’]或 [‘x’,‘y’,‘radius’]*对于椭圆,返回值是中心的坐标,长轴’phi’的方向,较大半轴’radius1’的长度,以及椭圆的较小半轴’radius2’的长度。*顺序分别是[‘row’,‘column’,‘phi’,‘radius1’,‘radius2’]或 [‘x’,‘y’,‘phi’,‘radius1’,‘radius2’]*对于一条线,返回该线的起点和终点。顺序是[‘row_begin’,‘column_begin’,‘row_end’,‘column_end’]*或 [‘x_begin’,‘y_begin’,‘x_end’,‘y_end’]*对于矩形,返回值是中心的坐标,主轴’phi’的方向,较大的半边’length1’的长度,以及矩形的较小半边’length2’的长度。*顺序分别是[‘row’,‘column’,‘phi’,‘length1’,‘length2’]或 [‘x’,‘y’,‘phi’,‘length1’,‘length2’]*GenParamValue*Parameterget_metrology_object_result(MetrologyHandle, 'all', 'all', 'result_type', 'all_param', Parameter)*查询计量对象的结果轮廓*参数说明*Contour (输入参数)给定计量对象的结果轮廓*MetrologyHandle (输入参数)计量模型的句柄*Index (输入参数)计量对象的索引,想要第几个结果轮廓*Instance 输入参数)计量对象的实例*Resolution 相邻轮廓点之间的距离get_metrology_object_result_contour (Contour1, MetrologyHandle, 'all', 'all', 1.5)
*                fill_up(Contour1, Contour1circle)dev_set_line_width(3)dev_set_color('green')dev_display(Contour1)disp_message (WindowHandle, '圆中心坐标:X:'+Parameter[0]+',Y:'+Parameter[1], 'window', 20, 20, 'red', 'true')ResultCenterColumn := Parameter[0]ResultCenterRow := Parameter[1]*清除模板clear_metrology_model (MetrologyHandle)elseResult := 'Fail'endifelseResult := 'Fail'endif********************************************************************显示结果********************dev_get_window (WindowHandle)set_display_font (WindowHandle, 20, 'mono', 'true', 'false')dev_set_line_width (2)dev_clear_window()dev_display (OriImage)if (Result == 'Pass')color := 'green'  dev_display (Contour1) *显示十字中心disp_cross (WindowHandle, Parameter[0], Parameter[1], 100, 90)*dev_display (ContCircle)dev_disp_text (Result + '\nX:' + ResultCenterColumn + ' Y:' + ResultCenterRow, 'window', 12, 12, color, ['box', 'box_color', 'shadow'], ['true', 'black', 'false'])        elsecolor := 'red'dev_disp_text (Result, 'window', 12, 12, color, ['box', 'box_color', 'shadow'], ['true', 'black', 'false'])endif***********************************************stop ()

效果

END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/43742.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用Vue3和Plotly.js绘制交互式3D散点图

本文由ScriptEcho平台提供技术支持 项目地址:传送门 使用 Plotly.js 创建 2D 密度图 应用场景介绍 密度图是一种可视化数据分布的图表,它显示了数据点的密度在不同区域的变化情况。在许多科学和工程领域中,密度图被广泛用于探索和分析数据…

5G(NR) NTN 卫星组网架构

5G(NR) NTN 卫星组网架构 参考 3GPP TR 38.821 5G NTN 技术适用于高轨、低轨等多种星座部署场景,是实现星地网络融合发展的可行技术路线。5G NTN 网络分为用户段、空间段和地面段三部分。其中用户段由各种用户终端组成,包括手持、便携站、嵌入式终端、车…

git撤销/返回到某次提交(idea工具 + gitbush)

不多说废话,直接展示使用。 方法一:使用idea工具进行返回 准备某次过度提交 使用idea打开git log 找到要回去的版本 点击右键选到reset 模式选hard,强制回滚 这个时候本地代码已经回归你指定的版本了。 这个时候再进行强制推送&#xff0c…

Drools开源业务规则引擎(三)- 事件模型(Event Model)

文章目录 Drools开源业务规则引擎(三)- 事件模型(Event Model)1.org.kie.api.event2.RuleRuntimeEventManager3.RuleRuntimeEventListener接口说明示例规则文件规则执行日志输出 4.AgentaEventListener接口说明示例监听器实现类My…

09 docker 安装tomcat 详解

目录 一、安装tomcat 1. tomcat镜像的获取 2. docker创建容器实列 3. 访问测试 404错误 4. 解决方案 5. 使用免修改版容器镜像 5.1. 运行实列的创建 5.2. 出现问题及解决: 6. 验证 OK 一、安装tomcat 1. tomcat镜像的获取 docker search tomcat #docker …

SCI二区TOP|蜘蛛黄蜂优化算法(SWO)原理及实现【免费获取Matlab代码】

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2023年,M Abdel-Basset受到蜘蛛黄蜂优化社会行为启发,提出了蜘蛛黄蜂优化算法(Spider Wasp Optimizer, SWO)。 2.算法原理 2.1算法思想 S…

dpo相对于rlhf的优化,或两者之间的异同

DPO (Direct Preference Optimization) 和 RLHF (Reinforcement Learning from Human Feedback) 都是用于优化大型语言模型以符合人类偏好的方法,但它们在实现方式和效果上有一些重要的区别: 相同点 目标:两种方法都旨在使模型输出与人类偏…

Android | 开发UI时候要注意的(单线程模型 导致事件执行到最后都需要回归主线程)

在 Android 开发中,所有涉及到 UI 操作的代码必须在主线程(UI 线程)上执行的原因如下所述,以及程序员在开发过程中需要注意的一些事项: 1. 原因: 安全性和稳定性: Android 系统是单线程模型的&…

初识c++(引用,inline,nullprt)

一、引用 1、定义 引用不是新定义⼀个变量&#xff0c;而是给已存在变量取了⼀个别名&#xff0c;编译器不会为引用变量开辟内存空间&#xff0c; 它和它引用的变量共用同⼀块内存空间。 类型& 引用别名 引用对象; #include<iostream> using namespace std; in…

342. 4的幂

哈喽&#xff01;大家好&#xff0c;我是奇哥&#xff0c;一位专门给面试官添堵的职业面试员 文章持续更新&#xff0c;可以微信搜索【小奇JAVA面试】第一时间阅读&#xff0c;回复【资料】更有我为大家准备的福利哟&#xff01; 文章目录 一、题目二、答案三、总结 一、题目 …

python--del

在Python中&#xff0c;del是一个关键字&#xff0c;用于删除对象。当你想删除列表的某个元素或者整个变量时&#xff0c;可以使用del。 以下是使用del的一些示例&#xff1a; 删除列表中的特定索引处的元素&#xff1a; my_list [1, 2, 3, 4, 5] del my_list[2] # 删除索引为…

C++ 算法——二分查找

如果要你在一个升序序列中查找一个值的位置&#xff0c;你是否还会傻乎乎的用下面这个 O ( n ) \mathcal O(n) O(n) 的代码暴力查找&#xff0c;如果是&#xff0c;我告诉你&#xff0c;其实根本不用这么做。 int find(int a[],int n,int k) {for(int i0;i<n;i) if(a[i]k)…

在Spring Boot项目中集成监控与报警

在Spring Boot项目中集成监控与报警 大家好&#xff0c;我是微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 1. 引言 在当今的软件开发中&#xff0c;监控和报警系统是保证系统稳定性和可靠性的重要组成部分。Spring Boot…

华为机考真题 -- 篮球游戏

题目描述: 幼儿园里有一个放倒的圆桶,它是一个线性结构,只能在桶的右边将放入篮球,但是可以在桶的左边或者右边将取出篮球。每个篮球有单独的编号,老师可以一次性放入一个或者多个篮球,小朋友可以在桶左边或者右边取出篮球,当桶里只有一个篮球的情况下,只能从桶的左边…

视频监控技术在食品安全监管中的关键应用

视频监控技术在食品安全监管中的关键应用 1、视频监控技术在食品安全监管中的作用 在食品安全监管中&#xff0c;视频监控技术发挥着不可替代的作用。通过安装视频监控系统&#xff0c;可以实现对食品生产、运输、储存等各个环节的实时监控和录像存储。这不仅有助于监管部门及…

Linux的前世今生

Unix的起源和发展 1969年&#xff0c;AT&T贝尔实验室的Ken Thompson和Dennis Ritchie等人开发了Unix操作系统。Unix的设计理念强调小而简洁的工具&#xff0c;文本流和系统模块化&#xff0c;这些理念后来成为Linux开发的重要基础。1973年&#xff0c;Unix用C语言重新编写…

深度学习-数学基础(四)

深度学习数学基础 数学基础线性代数-标量和向量线性代数-向量运算向量加和向量内积向量夹角余弦值 线性代数-矩阵矩阵加法矩阵乘法矩阵点乘矩阵计算的其他内容 人工智能-矩阵的操作矩阵转置&#xff08;transpose&#xff09;矩阵与向量的转化 线性代数-张量&#xff08;tensor…

GEE代码实例教程详解:湖泊面积变化分析

GEE代码实例教程详解&#xff1a;湖泊面积变化分析 简介 在本篇博客中&#xff0c;我们将通过Google Earth Engine (GEE) 探索湖泊面积随时间的变化。通过分析MODIS数据集中的归一化差异水体指数&#xff08;NDWI&#xff09;&#xff0c;我们可以识别湖泊区域并监测其面积变…

达梦数据库kill会话

达梦数据库kill会话 在达梦数据库&#xff08;DM Database&#xff09;中&#xff0c;可以使用 SP_CLOSE_SESSION 存储过程来终止会话。这个存储过程需要提供会话 ID (sid) 作为参数&#xff0c;用于指定哪个会话需要被终止。 下面是使用 SP_CLOSE_SESSION 存储过程的详细步骤…

第5章 Vite高级功能(二)

文章目录 6 缓存和持久化6.1 配置缓存目录 7 压缩与最小化7.1 启用压缩7.2 配置压缩选项 8 生产环境优化8.1 移除调试信息8.2 配置环境变量 9 静态资源优化9.1 压缩图像9.2 合并和压缩 CSS9.3 使用 HTTP/2 10 分析构建结果10.1 使用分析插件10.2 生成包分析报告 6 缓存和持久化…