OpenCV自学笔记十一:形态学操作(一)
目录
1、腐蚀
2、膨胀
3、通用形态学函数
4、开运算
5、闭运算
1、腐蚀
腐蚀(Erosion)是数字图像处理中的一种形态学操作,用于消除图像中边界附近的细小区域或缩小对象的大小。腐蚀操作通过卷积输入图像与结构元素(也称为腐蚀核)来实现。
腐蚀操作可以用来消除图像中的细小噪声、填充物体内部的孔洞以及缩小物体的大小。它基于局部区域的最小值,并使区域中的亮度值逐渐减小。
以下是一个使用OpenCV库实现腐蚀操作的简单示例代码:
import cv2import numpy as npdef erode(image, kernel):# 应用腐蚀操作eroded = cv2.erode(image, kernel, iterations=1)return eroded# 读取图像image = cv2.imread('input.jpg', 0)# 定义腐蚀核(结构元素)kernel = np.ones((3, 3), dtype=np.uint8)# 进行腐蚀操作eroded_image = erode(image, kernel)# 显示原始图像和腐蚀后的图像cv2.imshow('Original Image', image)cv2.imshow('Eroded Image', eroded_image)cv2.waitKey(0)cv2.destroyAllWindows()
在上述示例中,我们使用了OpenCV的`erode()`函数来实现腐蚀操作。`erode()`函数接受三个参数,第一个参数是输入图像,第二个参数是腐蚀核(结构元素),第三个参数是迭代次数(默认为1)。最后,通过`imshow()`函数显示原始图像和腐蚀后的图像。
2、膨胀
膨胀(Dilation)是数字图像处理中的一种形态学操作,用于扩展图像中的区域或增加对象的大小。膨胀操作通过卷积输入图像与结构元素(也称为膨胀核)来实现。
膨胀操作可以用于填充物体之间的空隙、连接相邻的对象以及增大物体的大小。它基于局部区域的最大值,并使区域中的亮度值逐渐增大。
以下是一个使用OpenCV库实现膨胀操作的简单示例代码:
import cv2import numpy as npdef dilate(image, kernel):# 应用膨胀操作dilated = cv2.dilate(image, kernel, iterations=1)return dilated# 读取图像image = cv2.imread('input.jpg', 0)# 定义膨胀核(结构元素)kernel = np.ones((3, 3), dtype=np.uint8)# 进行膨胀操作dilated_image = dilate(image, kernel)# 显示原始图像和膨胀后的图像cv2.imshow('Original Image', image)cv2.imshow('Dilated Image', dilated_image)cv2.waitKey(0)cv2.destroyAllWindows()
在上述示例中,我们使用了OpenCV的`dilate()`函数来实现膨胀操作。`dilate()`函数接受三个参数,第一个参数是输入图像,第二个参数是膨胀核(结构元素),第三个参数是迭代次数(默认为1)。最后,通过`imshow()`函数显示原始图像和膨胀后的图像。
3、通用形态学函数
通用形态学函数(General Morphological Function)是一种在形态学图像处理中常用的操作,可以实现腐蚀、膨胀、开运算、闭运算等多种形态学操作。
通用形态学函数结合了腐蚀和膨胀操作,并通过指定结构元素的形状和大小以及操作的类型来完成不同的形态学处理。它可以用于消除噪声、填充孔洞、连接对象、提取特征等应用。
在OpenCV中,可以使用`morphologyEx()`函数来实现通用形态学函数,其函数原型如下:
dst = cv2.morphologyEx(src, op, kernel[, anchor[, iterations[, borderType[, borderValue]]]])
参数说明:
- `src`:输入图像。
- `op`:操作类型,可选值包括`cv2.MORPH_ERODE`(腐蚀)、`cv2.MORPH_DILATE`(膨胀)、`cv2.MORPH_OPEN`(开运算)、`cv2.MORPH_CLOSE`(闭运算)等。
- `kernel`:结构元素(也称为核或腐蚀/膨胀核),用于定义操作的形状和大小。
- `anchor`:锚点位置,默认为`(-1, -1)`表示结构元素的中心。
- `iterations`:操作的迭代次数,默认为1。
- `borderType`:边界扩展类型,默认为`cv2.BORDER_CONSTANT`。
- `borderValue`:边界值,默认为0。以下是一个简单的示例代码,演示了如何使用通用形态学函数进行图像处理操作:
import cv2
import numpy as np# 读取图像
image = cv2.imread('input.jpg', 0)# 定义核(结构元素)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))# 腐蚀操作
eroded_image = cv2.morphologyEx(image, cv2.MORPH_ERODE, kernel)# 膨胀操作
dilated_image = cv2.morphologyEx(image, cv2.MORPH_DILATE, kernel)# 开运算操作
opened_image = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel)# 闭运算操作
closed_image = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel)# 显示原始图像和处理后的图像
cv2.imshow('Original Image', image)
cv2.imshow('Eroded Image', eroded_image)
cv2.imshow('Dilated Image', dilated_image)
cv2.imshow('Opened Image', opened_image)
cv2.imshow('Closed Image', closed_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
在上述示例中,我们首先定义了一个核(结构元素)`kernel`,然后使用`morphologyEx()`函数分别进行腐蚀、膨胀、开运算和闭运算等操作,并通过`imshow()`函数显示原始图像和处理后的图像。
请注意,通用形态学函数还可以使用更复杂的结构元素(如椭圆形、十字形等)进行形态学操作,并使用适当的参数来控制操作的效果。
4、开运算
开运算(Opening)是形态学图像处理中的一种操作,由腐蚀(Erosion)后接着膨胀(Dilation)两步组成。它可以用于消除图像中小的噪声、平滑边缘、分离相邻物体等。
开运算的操作过程如下:
1. 对输入图像进行腐蚀操作。
2. 对上一步得到的结果进行膨胀操作。
开运算能够将较小的图案或细节从物体边缘剥离出来,同时保持物体整体形状不变。这是因为腐蚀操作会消除较小的细节,而膨胀操作又将物体重新扩展回原来的大小。
以下是一个使用OpenCV库实现开运算的简单示例代码:
import cv2import numpy as npdef opening(image, kernel):# 应用开运算操作opened = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel)return opened# 读取图像image = cv2.imread('input.jpg', 0)# 定义腐蚀和膨胀核(结构元素)kernel = np.ones((3, 3), dtype=np.uint8)# 进行开运算操作opened_image = opening(image, kernel)# 显示原始图像和开运算后的图像cv2.imshow('Original Image', image)cv2.imshow('Opened Image', opened_image)cv2.waitKey(0)cv2.destroyAllWindows()
在上述示例中,我们首先定义了一个核(结构元素)`kernel`,然后使用`morphologyEx()`函数进行开运算操作,并通过`imshow()`函数显示原始图像和开运算后的图像。
开运算对于去除噪声、平滑边缘以及分离相邻物体等应用非常有效。它可以改善图像质量,减少干扰信息,并提升后续图像处理任务的效果。
5、闭运算
闭运算是数字图像处理中的一种形态学操作,也被称为闭合操作。它由两个基本操作组成:膨胀(dilation)和腐蚀(erosion)。
闭运算首先对图像进行腐蚀操作,然后再对腐蚀结果进行膨胀操作。这两个操作可以通过结构元素(也称为模板或内核)来定义。结构元素是一个小的矩形、圆形或其他形状的矩阵,用于定义腐蚀和膨胀操作的邻域范围。
闭运算的目的是消除图像中的细小空洞并连接相邻的物体。它可以平滑边界并保持物体的整体形状。闭运算通常用于去除噪音、填补断裂或空洞以及改善物体的形状。
在执行闭运算时,先进行腐蚀操作,使图像中的边缘和细小特征变得更小或消失。然后再进行膨胀操作,使原始物体恢复到接近原始大小,并填充空洞。这样就实现了闭运算。
闭运算常用于图像分割、形状分析、目标检测等领域,并且在计算机视觉和图像处理中具有广泛的应用。
闭运算的代码可以使用图像处理库(如OpenCV)来实现。下面是一个使用Python和OpenCV库执行闭运算的示例代码:
import cv2import numpy as np# 读取图像image = cv2.imread('image.jpg', 0) # 以灰度图像方式读取,若为彩色图像则改为cv2.IMREAD_COLOR# 定义结构元素kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5)) # 5x5的矩形结构元素# 执行闭运算closing = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel)# 显示结果cv2.imshow('Original Image', image)cv2.imshow('Closing Result', closing)cv2.waitKey(0)cv2.destroyAllWindows()
在上述代码中,首先通过`cv2.imread()`函数读取输入图像,并将其转换为灰度图像。然后使用`cv2.getStructuringElement()`函数定义了一个5x5的矩形结构元素。接下来,使用`cv2.morphologyEx()`函数执行闭运算,其中第二个参数`cv2.MORPH_CLOSE`表示进行闭运算操作。
最后,使用`cv2.imshow()`函数显示原始图像和闭运算结果,使用`cv2.waitKey()`等待用户按下键盘按键,最后使用`cv2.destroyAllWindows()`关闭窗口。
请注意,以上示例仅为演示闭运算的代码框架,你需要根据你的实际需求进行相应的修改和调整。同时,确保你已经安装了OpenCV库,并将输入图像替换为你自己的图像路径。
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
OpenCV自学笔记十一:形态学操作(一)
目录 1、腐蚀 2、膨胀 3、通用形态学函数 4、开运算 5、闭运算 1、腐蚀 腐蚀(Erosion)是数字图像处理中的一种形态学操作,用于消除图像中边界附近的细小区域或缩小对象的大小。腐蚀操作通过卷积输入图像与结构元素(也称为腐…...
![](https://img-blog.csdnimg.cn/9bbc18352bfc49e0a00e5cb1901b5b39.png)
封装全局异常处理
文章目录 1 定义错误码类2 定义业务异常类3 全局异常处理器4 使用5 前端请求效果总结 1 定义错误码类 可以定义各种错误码枚举,比如业务,系统相关的报错信息 /*** 错误代码* 错误码** author leovany* date 2023/09/23*/ public enum ErrorCode {SU…...
![](https://img-blog.csdnimg.cn/f843c1a681a644e69cc5be6723c52d24.png)
python的requests响应请求,结果乱码,即使设置了response.encoding也没有用的解决方法
一、问题 如图: 一般出现乱码,我们会有三种解决方式,如下但是图中解决了发现还是不行, response.encodingresponse.apparent_encoding通过看网页源码对response.encodingutf8指定编码格式或者直接通过response.content.decode()来获得源码 出…...
![](https://img-blog.csdnimg.cn/5506990d11794e67ba8c6054f8b0d9f9.png)
PyCharm 手动下载插件
插件模块一直加载失败,报错信息: Marketplace plugins are not loaded. Check the internet connection and refresh. 尝试了以下方法,均告失败: pip 换源Manage Plugin Repositories...HTTP 代理设置...关闭三个防火墙 最后选…...
![](https://img-blog.csdnimg.cn/abf43247452e4251bdf0981d24349a91.png)
Gnomon绑定基础(约束 IK 节点)
点约束 方向约束 父约束 目标约束 修改后 对象方向 IK控制柄 直的骨骼,指定IK怎么弯曲 直的骨骼,指定IK怎么弯曲 样条曲线 数学节点 乘除节点 混合节点 注意...
![](https://img-blog.csdnimg.cn/9bd2b575066a40f7b9f7e8619b9d3732.png)
STL常用遍历,查找,算法
目录 1.遍历算法 1.1for_earch 1.2transform 2.常用查找算法 2.1find,返回值是迭代器 2.1.1查找内置数据类型 2.1.2查找自定义数据类型 2.2fin_if 按条件查找元素 2.2.1查找内置的数据类型 2.2.2查找内置数据类型 2.3查找相邻元素adjeacent_find 2.4查找指…...
![](https://www.ngui.cc/images/no-images.jpg)
BCC源码内容概览(1)
接前一篇文章:BCC源码编译和安装 本文参考官网中的Contents部分的介绍。 BCC源码根目录的文件,其中一些是同时包含C和Python的单个文件,另一些是.c和.py的成对文件,还有一些是目录。 跟踪(Tracing) exam…...
![](https://img-blog.csdnimg.cn/1ccea9bb2cfb4c8b8793e52f1401e571.png)
mysql限制用户登录失败次数,限制时间
mysql用户登录限制设置 mysql 需要进行用户登录次数限制,当使用密码登录超过 3 次认证链接失败之后,登录锁住一段时间,禁止登录这里使用的 mysql: 8.1.0 这种方式不用重启数据库. 配置: 首先进入到 mysql 命令行:然后需要安装两个插件: 在 mysql 命令行中执行: mysql> INS…...
![](https://www.ngui.cc/images/no-images.jpg)
从利用Arthas排查线上Fastjson问题到Java动态字节码技术(下)
上一篇从Arthas的源码引出了Java动态字节码技术,那么这一篇就从几种Java字节码技术出发,看看Arthas是如何通过动态字节码技术做到无侵入的源码增强; Java大部分情况下都是解释执行的,也就是解释.class文件,所以如果我们…...
![](https://img-blog.csdnimg.cn/a1179c1aff124843b9df1cd077a0c7c3.png)
Ubuntu中安装Anaconda 如何将 路径导入为全局变量
第一步:将你的anaconda 路径复制下来,在终端输入对应路径。 echo export PATH"/home/你的用户名/anaconda3/bin:$PATH" >> ~/.bashrc 第二步:在终端输入下面命令或者重启系统。 source ~/.bashrc 在对应的anaconda安装目…...
![](https://img-blog.csdnimg.cn/977a1e49aeba4ae697afaab348796da1.png)
【QT】Qt的随身笔记(持续更新...)
目录 Qt 获取当前电脑桌面的路径Qt 获取当前程序运行路径Qt 创建新的文本文件txt,并写入内容如何向QPlainTextEdit 写入内容QTimerQMessageBox的使用QLatin1StringQLayoutC在c头文件中写#include类的头文件与直接写class加类名有何区别mutable关键字前向声明 QFontQ…...
![](https://img-blog.csdnimg.cn/d660272ee9c1441dbf704ff352be2592.png)
【LeetCode-简单题】589. N 叉树的前序遍历
文章目录 题目方法一:单循环栈做法方法二:递归 题目 方法一:单循环栈做法 关键在于子节点的入栈顺序,决定了子节点的出栈顺序, 因为是前序遍历 所以压栈顺序先让右边的入栈 依次往左 这样左边的节点会在栈顶 这样下次…...
![](https://www.ngui.cc/images/no-images.jpg)
Linphone3.5.2 ARM RV1109音视频对讲开发记录
Linphone3.5.2 ARM RV1109音视频对讲开发记录 说明 这是一份事后记录,主要记录的几个核心关键点,有可能很多细节没有记上,主要是方便后面自己再找回来! 版本 3.5.2 一些原因选的是这样一个旧的版本! 新的开发最好选新一些的版…...
![](https://img-blog.csdnimg.cn/a3c7e5aebb2b4439a625503333efd43a.gif)
Unity用相机实现的镜子效果
首先登场 场景中的元素 mirror是镜子,挂着我们的脚本,Quad是一个面片。Camera是用来生成RenderTexture给面片的。里面的test1是我用来调试位置的球。 镜子size是大小,x是-2,为了反转一下贴图 相机直接可以禁用掉,用…...
![](https://img-blog.csdnimg.cn/f69c5daaa74f4ea3bb4f689ae26eec32.png)
计算机网络分类
按照覆盖范围分类 (1)个域网:通常覆盖范围在1~10m。 (2)局域网:通常覆盖范围在10m~1km。 (3)城域网:覆盖范围通常在5~50 km 。 &…...
![](https://img-blog.csdnimg.cn/8a17f9fda76241ffa192541f6fe84b69.png)
AI AIgents时代 - (三.) AutoGPT和AgentGPT
前两篇讲解了Agent的原理和组件,这节我将给大家介绍两个agent项目,给出它们的工作原理和区别,并教大家亲手尝试使用 Agents🎉 🟢 AutoGPT🤖️ 我们的老朋友,之前文章也专门写过。AutoGPT 是一…...
![](https://www.ngui.cc/images/no-images.jpg)
Jmeter接口自动化和Python接口自动化,如何选择?
选择Jmeter或Python进行接口自动化测试取决于您的具体需求和环境。以下是一些可以考虑的因素: 1. 语言熟悉度:如果您对Java更熟悉,那么Jmeter可能是更好的选择。而如果您的团队或个人对Python更熟悉,那么Python可能是更好的选择。…...
![](https://img-blog.csdnimg.cn/8bcb66a90de54d0bba412f6bd78957c0.jpeg)
Sqilte3初步教程
文章目录 安装创建数据库创建和删除表插入行数据 安装 Windows下安装,首先到下载页面,下载Windows安装软件,一般是 sqlite-dll-win32-*.zip sqlite-tools-win32-*.zip下载之后将其内容解压到同一个文件夹下,我把它们都放在了D:\…...
![](https://www.ngui.cc/images/no-images.jpg)
详解Python中的json库
目录 1. json简介2. dumps/loads3. dump/load4. jsonl格式 1. json简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,用于在不同应用程序之间传递数据。它是一种文本格式,易于阅读和编写,同时也易于…...
![](https://img-blog.csdnimg.cn/1dc18125f7b446d792f094e1998eebe7.png)
【Spring Boot】Spring Boot源码解读与原理剖析
这里写目录标题 前言精进Spring Boot首选读物“小册”变“大书”,彻底弄懂Spring Boot全方位配套资源,学不会来找我!技术新赛道,2023领先抢跑 前言 承载着作者的厚望,掘金爆火小册同名读物《Spring Boot源码解读与原理…...
![](https://www.ngui.cc/images/no-images.jpg)
C++学习(1)
一、C概述(了解) C在C语言的基础上添加了面向对象编程和泛型编程的支持 二、helloword程序(掌握) #define _CET_SECURE_NO_WARNINGS//在开发软件visual studio编译 c文件时, visual studio认为strcpy,scanf等函数不安全的导致报…...
![](https://img-blog.csdnimg.cn/72f3e91ea56e4661960335e2ce4cbe02.png)
机器人如何有效采摘苹果?
摘要:本文利用动捕数据构建拟人运动模型,对比观察两种苹果采摘模式,并对系统性能进行全面评估,为提高机器人采摘效率提供创新方法。 近期,一项关于苹果采摘机器人的有趣研究—— "Design and evaluation of a rob…...
![](https://img-blog.csdnimg.cn/be75f855c89749ba8651002d72333d1b.png)
C# OpenCvSharp Yolov8 Detect 目标检测
效果 项目 代码 using OpenCvSharp; using OpenCvSharp.Dnn; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace Open…...
![](https://www.ngui.cc/images/no-images.jpg)
rust数组
一、定义数组 (一)一维数组 1.指定所有元素 语法格式 let variable_name: [dataType; size] [value1,value2,value3];例如 let arr: [i32; 4] [10,20,30,40];2.指定初始值和长度 所有元素具有相同的值 语法格式 let variable_name: [dataType; siz…...
![](https://img-blog.csdnimg.cn/7cf8d15a0c8f43b5866566df00e87fd4.png)
ubuntu | 安装NVIDIA套件:驱动、CUDA、cuDNN
CUDA 查看支持最高的cuda版本 nvidia-smiCUDA Version:12.2 区官网下在12.2.x最新的版本即可CUDA Toolkit Archive | NVIDIA Developer 下载安装 wget https://developer.download.nvidia.com/compute/cuda/12.2.2/local_installers/cuda_12.2.2_535.104.05_linux.run sudo…...
![](https://www.ngui.cc/images/no-images.jpg)
JAVA学习笔记
一、学习要点 java的最大优势就是跨平台; java的三个版本,javaSE标准版本,javaEE企业版本,javaME微型版本(用的比较少); JVM(Java Virtual Machine,Java虚拟机); JRE…...
![](https://img-blog.csdnimg.cn/img_convert/a1687ac767d17c4a229fb61626e55e32.png)
车载软件架构 —— 持续集成持续交付
车载软件架构 —— 持续集成持续交付 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 对学习而言,学习之后的思考、思考之后的行动、行动之后的改变更重要,如果不盯住内层的改变量,那么在表层投…...
![](https://www.ngui.cc/images/no-images.jpg)
c++ 二元运算符重载, 以加法为例
/* * c 二元运算符重载, 以加法为例 */ #include <stdio.h> class Complex { public: int r0; // real, 实部 int v0; //virtual, 虚部 }; // 重载加法 操作符 // 可见,c2元运算符,取其左侧为第一参数,右侧为第二参数 // 返回值可以付给新的变量 C…...
![](https://img-blog.csdnimg.cn/img_convert/1bec99dba00bf34e924f3d9f0dd3cb57.jpeg)
基于 SpringBoot+Vue的电影影城管理系统,附源码,数据库
文章目录 第一章 简介第二章 技术栈第三章 功能分析第四章 系统设计第5章 系统详细设计六 源码咨询 第一章 简介 本影城管理系统,是基于 Java SpringBoot 开发的。主要包括二大功能模块,即用户功能模块和管理员功能模块。 (1)管…...
![](https://img-blog.csdnimg.cn/img_convert/ea199c1b5d7e4a354ba8cb956b7f51dc.png)
Docker实战技巧(二):Kubernetes基础操作实战
Kubernetes定位在Saas层,重点解决了微服务大规模部署时的服务编排问题 1、关闭防火墙并设置开机禁用 systemctl stop firewalld systemctl disable firewalld 2、配置repo cd /etc/yum.repos.d/ 下载Docker repo wget https://mirrors.aliyun.com/docker-…...
![](/images/no-images.jpg)
可以做mv 的视频网站/重庆seo霸屏
需求 每个文件需要一个loggerlog同时输出到控制台和文件log名为脚本名_日期.log 实现代码如下 from pathlib import Path import time, sys import loggingdef get_logger(log_folder: str "logs"):"""获取指定格式的logger,实现在控制…...
![](/images/no-images.jpg)
最火的二十个电商app/广州网络推广seo
这里总结了常见的一些mysql错误,会不断更新。 要求大家将如下错误的每个单词都知道是什么意思,方便调错。 --1.语法错误:SQL syntax [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL …...
![](https://img-blog.csdnimg.cn/img_convert/94ce072c1f9f17620e8674199cd32495.png)
使用cn域名做网站的多吗/百度推广平台登录
JVM 试图定义一种统一的内存模型,能将各种底层硬件,以及操作系统的内存访问差异进行封装,使 Java 程序在不同硬件及操作系统上都能达到相同的并发效果。 JMM 的结构 JMM 分为主存储器(Main Memory)和工作存储器&…...
![](https://img-blog.csdnimg.cn/20200815160908553.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpamlhbWluZ185OQ==,size_16,color_FFFFFF,t_70#pic_center)
wordpress搭建博客视频教程/网络舆情分析报告模板
文章目录课程总结作业1、符号地图2、连续面积图3、 圆视图4、仪表板课程总结 tableau进阶:数据集合并、符号地图、智能显示、插入自定义形状、仪表板课程总结 作业 第5次课作业: 使用“豆瓣电影数据.xlsx”文件,完成以下作业; …...
![](/images/no-images.jpg)
昭通做网站/网站运营推广方式
1.jdk1.7.80的rpm的包的下载地址如下,请自己选择32位还是64位,下载完之后通过vmware的共享功能共享一个文件下,然后使用cp命令copy到linux系统中去。 http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javas…...
![](/images/no-images.jpg)
儿童编程网课平台哪个好/seo优化技术教程
AtomicReference类的getAndSet()方法用于以原子方式将AtomicReference对象的值设置为newValue,该值作为参数传递并返回AtomicReference对象的旧值,并具有由VarHandle.getAndSet(java.lang.Object ... ).VarHandle.getAndSet(java.lang.Object…)指定将变…...