pythonOpenCV篇:0基础带你python入门之常用函数
① 二值化函数
- 功能:将图像转换为二值图像(黑白图像),将像素值分为两种类别:前景(白)和背景(黑)。
- 函数:cv2.threshold()
- 参数: - src:输入图像(通常为灰度图像)。
- thresh:阈值值,用于将像素分割为前景和背景。
- maxval:满足条件的像素值赋值为此值(通常为255)。
- type:阈值类型,例如:- cv2.THRESH_BINARY:大于阈值的像素赋值为- maxval,否则为0。
- cv2.THRESH_BINARY_INV:反向二值化。
- cv2.THRESH_TRUNC:大于阈值的像素赋值为阈值,其余保持不变。
- cv2.THRESH_TOZERO:小于阈值的像素赋值为0。
- cv2.THRESH_TOZERO_INV:大于阈值的像素赋值为0。
 
 
- 返回值: - retval:实际使用的阈值(当选择 Otsu 或自适应阈值时有意义)。
- dst:二值化后的图像。
 
- 应用:目标检测、边缘检测、文档处理等。
- 代码: import cv2# 读取图像文件 img = cv2.imread("./lena.png") # 从当前目录读取名为 "lena.png" 的图像文件 cv2.imshow("flower", img) # 显示原始图像,窗口标题为 "flower"# 将彩色图像转换为灰度图像 img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 使用 OpenCV 的颜色转换函数,将图像从 BGR 转为灰度 cv2.imshow("gray", img_gray) # 显示灰度图像,窗口标题为 "gray"# 设置二值化的阈值 thresh = 120 # 阈值设为 120,低于该值的像素归为 0,高于该值的像素归为 255# 手动实现基于阈值的二值化 img_binary = img_gray # 将灰度图赋值给新的变量 img_binary for i in range(img_gray.shape[0]): # 遍历图像的每一行for j in range(img_gray.shape[1]): # 遍历图像的每一列if img_binary[i][j] <= thresh: # 如果像素值小于等于阈值pass # 此处原本应该将像素值设为 0,但被注释掉了(什么都不做)# img_binary[i][j] = 0 # 手动将像素值设置为 0else: # 如果像素值大于阈值img_binary[i][j] = 255 # 手动将像素值设置为 255(白色)# 使用 OpenCV 自带的阈值函数实现二值化(此部分代码被注释掉) # ret, img_binary = cv2.threshold(img_gray, 200, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU) # 说明: # ret:实际使用的阈值(当使用 Otsu 方法时,自动计算得到)。 # img_binary:二值化后的图像。 # cv2.THRESH_BINARY:普通二值化,像素值高于阈值设为最大值(255),否则为 0。 # cv2.THRESH_OTSU:自动计算全局最佳阈值。# 显示二值化后的图像 cv2.imshow("threshold ", img_binary) # 显示手动二值化后的图像,窗口标题为 "threshold"# 等待用户按键,随后关闭窗口 cv2.waitKey(0) # 等待用户按下任意键,不限制时间
② 自适应二值化函数
- 功能:对光照不均匀的图像进行二值化,使用局部区域的统计信息来计算阈值。
- 函数:cv2.adaptiveThreshold()
- 参数: - src:输入图像(必须是灰度图)。
- maxValue:满足条件的像素值赋值为此值(通常为255)。
- adaptiveMethod:自适应阈值计算方法:- cv2.ADAPTIVE_THRESH_MEAN_C:取邻域均值作为阈值。
- cv2.ADAPTIVE_THRESH_GAUSSIAN_C:取邻域高斯加权均值作为阈值。
 
- thresholdType:阈值类型(通常为- cv2.THRESH_BINARY或- cv2.THRESH_BINARY_INV)。
- blockSize:邻域大小(必须为奇数)。
- C:常量,用于调整阈值结果。
 
- 返回值: - dst:自适应二值化后的图像。
 
- 应用:场景文字检测、身份证/票据识别、医学影像处理。
- 代码: import cv2 # 导入 OpenCV 库,用于图像处理# 读取图像 image = cv2.imread("./lena.png") # 从当前目录读取名为 "lena.png" 的图像文件(彩色图像) # cv2.imshow("flower", image) # 如果需要显示原图,可以取消注释此行,窗口标题为 "flower"# 将彩色图像转换为灰度图像 img_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 使用 OpenCV 的颜色转换函数,将 BGR 彩色图像转为灰度图像 cv2.imshow("gray", img_gray) # 显示灰度图像,窗口标题为 "gray"# 使用 Otsu 方法进行全局阈值化 ret, img_binary = cv2.threshold(img_gray, # 输入图像,必须是灰度图像200, # 手动设置的初始阈值(Otsu 会自动调整,此值会被忽略)255, # 满足条件的像素值设置为 255cv2.THRESH_BINARY + cv2.THRESH_OTSU # 二值化模式为 Otsu 和普通二值化的组合 ) # cv2.imshow("threshold", img_binary) # 如果需要显示 Otsu 二值化结果,可以取消注释此行,窗口标题为 "threshold"# 使用自适应二值化方法 image_np_adaptive = cv2.adaptiveThreshold(img_gray, # 输入图像,必须是灰度图像255, # 满足条件的像素值设置为 255cv2.ADAPTIVE_THRESH_GAUSSIAN_C, # 使用高斯加权的邻域均值来计算局部阈值cv2.THRESH_BINARY, # 二值化模式为普通二值化7, # 邻域大小(blockSize),必须为奇数,例如 7 表示 7×7 的窗口5 # 常量 C,最终阈值为计算出的局部阈值减去 C ) cv2.imshow("image_np_adaptive", image_np_adaptive) # 显示自适应二值化后的图像,窗口标题为 "image_np_adaptive"# 等待用户按键,随后关闭所有窗口 cv2.waitKey(0) # 等待用户按下任意键,不限制时间
③ 腐蚀函数
- 功能:减少图像中的白色区域(前景),去除小的噪声点或断开小的连接。
- 函数:cv2.erode()
- 参数: - src:输入图像(二值图像或灰度图像)。
- kernel:结构元素(形状和大小由- cv2.getStructuringElement()定义)。
- iterations:腐蚀操作的次数。
 
- 返回值: - dst:腐蚀后的图像。
 
- 应用:去除噪声、边缘提取、分离连通物体等。
- 代码: import cv2 # 导入 OpenCV 库,用于图像处理# 读取图像 image_binary = cv2.imread("./morph.png") # 从当前目录读取名为 "morph.png" 的图像文件 # 注意:这里假设图像是二值图像(黑白图像),如果图像是彩色或灰度图,需要先进行预处理。# 创建结构元素(内核) image_1 = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, # 内核形状为椭圆(10, 10) # 内核大小为 10×10 像素 ) # 说明: # `cv2.getStructuringElement()` 用于创建形态学操作的结构元素(内核)。 # 参数 `cv2.MORPH_ELLIPSE` 表示使用椭圆形内核。其他可选形状包括: # - `cv2.MORPH_RECT`:矩形 # - `cv2.MORPH_CROSS`:交叉形 # 内核的大小对形态学操作的结果影响很大,较大的内核会产生更显著的效果。# 使用腐蚀操作处理图像 image_erode = cv2.erode(image_binary, # 输入图像,通常为二值图像image_1 # 结构元素(内核) ) # 说明: # `cv2.erode()` 是 OpenCV 的腐蚀函数,用于减少图像中前景(白色区域)的面积。 # 通过结构元素内核,腐蚀操作会移除边缘上的白色像素。 # 对于 10×10 的椭圆内核,腐蚀操作会缩小前景区域,并去除小的噪声。# 显示腐蚀后的图像 cv2.imshow("image_erode", image_erode) # 显示腐蚀后的图像,窗口标题为 "image_erode"# 显示原始图像 cv2.imshow("image_binary", image_binary) # 显示原始图像,窗口标题为 "image_binary"# 等待用户按键后关闭窗口 cv2.waitKey(0) # 等待用户按下任意键
④ 膨胀函数
- 功能:增加图像中的白色区域(前景),填补断裂的区域或小孔。
- 函数:cv2.dilate()
- 参数: - src:输入图像(二值图像或灰度图像)。
- kernel:结构元素。
- iterations:膨胀操作的次数。
 
- 返回值: - dst:膨胀后的图像。
 
- 应用:增强物体区域、填充空隙、形态学处理等。
- 代码: import cv2 # 导入 OpenCV 库,用于图像处理# 读取图像 image_binary = cv2.imread("./lena.png") # 从当前目录读取名为 "lena.png" 的图像文件(彩色图像)# 将彩色图像转换为灰度图像 image_gray = cv2.cvtColor(image_binary, cv2.COLOR_BGR2GRAY) # 使用 OpenCV 的颜色转换函数,将 BGR 图像转为灰度图像# 自适应二值化 image_np_adaptive = cv2.adaptiveThreshold(image_gray, # 输入灰度图像255, # 满足条件的像素值设置为 255cv2.ADAPTIVE_THRESH_GAUSSIAN_C, # 使用高斯加权的邻域均值计算局部阈值cv2.THRESH_BINARY, # 二值化模式为普通二值化7, # 邻域大小(blockSize),必须是奇数,这里为 7×7 的窗口5 # 常量 C,用于调整阈值(阈值 = 局部均值 - C) ) # 自适应二值化适用于光照不均匀的图像处理。参数 `blockSize` 和 `C` 会直接影响二值化结果。# 创建形态学操作的结构元素(内核) kernal = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, # 内核形状为椭圆形(4, 4) # 内核大小为 4×4 像素 ) # 注意:较小的内核会对图像做出细微的形态学改变,较大的内核会显著改变图像形状。# 腐蚀操作 image_erode = cv2.erode(image_np_adaptive, # 输入二值图像(经过自适应二值化的图像)kernal # 使用的内核 ) # `cv2.erode()` 会减少前景(白色区域)的面积,移除边缘上的噪声点或小的白色区域。 # 腐蚀操作通常用于消除小噪声或分离相连的物体。# 膨胀操作 image_erode_dilate = cv2.dilate(image_erode, # 输入图像(已经腐蚀过的图像)kernal # 使用的内核 ) # `cv2.dilate()` 会增加前景(白色区域)的面积,填充空洞或连接断裂的部分。 # 腐蚀和膨胀结合使用可以实现开运算(消除小噪声)或闭运算(填补小空洞)。# 显示腐蚀后的图像 cv2.imshow("image_erode", image_erode) # 显示腐蚀处理后的图像,窗口标题为 "image_erode"# 显示原始彩色图像 cv2.imshow("image_binary", image_binary) # 显示原始图像,窗口标题为 "image_binary"# 显示腐蚀后再膨胀的图像 cv2.imshow("image_erode_dilate", image_erode_dilate) # 显示膨胀处理后的图像,窗口标题为 "image_erode_dilate"# 等待用户按键后关闭窗口 cv2.waitKey(0) # 等待用户按下任意键,窗口保持打开
⑤ 仿射变换函数
- 功能:对图像进行线性变换,如旋转、缩放、平移等。
- 函数:cv2.warpAffine()
- 参数: - src:输入图像。
- M:2x3 的仿射变换矩阵(通过- cv2.getAffineTransform()生成)。
- dsize:输出图像的尺寸(宽度和高度)。
- flags:插值方法(如- cv2.INTER_LINEAR)。
- borderMode和- borderValue:用于处理边界像素。
 
- 返回值: - dst:变换后的图像。
 
- 应用:图像旋转、缩放、平移、视角调整等。
- 代码: import numpy as np # 导入 NumPy,用于数值计算(此处未使用,但是常见的图像处理工具库) import cv2 # 导入 OpenCV 库,用于图像处理# 读取图像 image_binary = cv2.imread("./lena.png") # 从当前目录读取名为 "lena.png" 的图像文件(彩色图像)# 将彩色图像转换为灰度图像 image_gray = cv2.cvtColor(image_binary, cv2.COLOR_BGR2GRAY) # 使用 OpenCV 的颜色转换函数,将 BGR 图像转为灰度图像# 自适应二值化 image_np_adaptive = cv2.adaptiveThreshold(image_gray, # 输入灰度图像255, # 满足条件的像素值设置为 255cv2.ADAPTIVE_THRESH_GAUSSIAN_C, # 使用高斯加权的邻域均值计算局部阈值cv2.THRESH_BINARY, # 二值化模式为普通二值化7, # 邻域大小(blockSize),必须是奇数,这里为 7×7 的窗口5 # 常量 C,用于调整阈值(阈值 = 局部均值 - C) ) # 自适应二值化适用于光照不均匀的图像处理。参数 `blockSize` 和 `C` 会直接影响二值化结果。# 创建形态学操作的结构元素(内核) kernal = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, # 内核形状为椭圆形(4, 4) # 内核大小为 4×4 像素 ) # 注意:较小的内核会对图像做出细微的形态学改变,较大的内核会显著改变图像形状。# 腐蚀操作 image_erode = cv2.erode(image_np_adaptive, # 输入二值图像(经过自适应二值化的图像)kernal # 使用的内核 ) # `cv2.erode()` 会减少前景(白色区域)的面积,移除边缘上的噪声点或小的白色区域。 # 腐蚀操作通常用于消除小噪声或分离相连的物体。# 膨胀操作 image_erode_dilate = cv2.dilate(image_erode, # 输入图像(已经腐蚀过的图像)kernal # 使用的内核 ) # `cv2.dilate()` 会增加前景(白色区域)的面积,填充空洞或连接断裂的部分。 # 腐蚀和膨胀结合使用可以实现开运算(消除小噪声)或闭运算(填补小空洞)。# 显示腐蚀后的图像 cv2.imshow("image_erode", image_erode) # 显示腐蚀处理后的图像,窗口标题为 "image_erode"# 显示原始彩色图像 cv2.imshow("image_binary", image_binary) # 显示原始图像,窗口标题为 "image_binary"# 显示腐蚀后再膨胀的图像 cv2.imshow("image_erode_dilate", image_erode_dilate) # 显示膨胀处理后的图像,窗口标题为 "image_erode_dilate"# 等待用户按键后关闭窗口 cv2.waitKey(0) # 等待用户按下任意键,窗口保持打开
⑥ 透视变换函数
- 功能:对图像进行透视变换,从一个视角映射到另一个视角,校正倾斜图像或提取局部内容。
- 函数:cv2.warpPerspective()
- 参数: - src:输入图像。
- M:3x3 的透视变换矩阵(通过- cv2.getPerspectiveTransform()生成)。
- dsize:输出图像的尺寸。
- flags、- borderMode和- borderValue:与仿射变换类似。
 
- 返回值: - dst:透视变换后的图像。
 
- 应用:文档矫正、车牌识别、场景理解等。
- 代码: import cv2 # 导入 OpenCV 库,用于图像处理 import numpy as np # 导入 NumPy 库,用于数组操作# 读取图像 image = cv2.imread("./card.png") # 从当前目录中读取名为 "card.png" 的图像文件# 检查图像是否成功加载 if image is None: # 如果图像加载失败print("Error: Image not found. Please check the file path.") # 输出错误信息exit() # 终止程序# 定义原图中的四个点和目标点 point1 = np.array([[200, 100], [700, 150], [140, 400], [650, 460]], dtype=np.float32) # 说明: # `point1` 是原始图像中感兴趣区域(ROI)的四个顶点,表示需要校正的区域。 # 每个点用 (x, y) 坐标表示。 # 例如,(200, 100) 表示原图中左上角的一个点。point2 = np.array([[0, 0], [image.shape[1], 0], [0, image.shape[0]], [image.shape[1], image.shape[0]]], dtype=np.float32) # 说明: # `point2` 是透视变换后图像的目标点,定义了变换后的矩形区域。 # (0, 0) 是左上角,(image.shape[1], 0) 是右上角,依次类推。 # `image.shape[1]` 表示图像宽度,`image.shape[0]` 表示图像高度。# 获取透视变换矩阵 M = cv2.getPerspectiveTransform(point1, point2) # 说明: # `cv2.getPerspectiveTransform()` 函数计算透视变换矩阵。 # 参数: # - `point1`:原始图像中的四个点。 # - `point2`:目标图像中的四个点。 # 返回值: # - `M` 是一个 3x3 的透视变换矩阵。# 进行透视变换 image_s = cv2.warpPerspective(image, M, (image.shape[1], image.shape[0])) # 说明: # `cv2.warpPerspective()` 函数对图像应用透视变换。 # 参数: # - `image`:输入图像。 # - `M`:透视变换矩阵。 # - `(image.shape[1], image.shape[0])`:输出图像的大小(宽度、高度)。 # 返回值: # - `image_s` 是经过透视变换后的图像。# 显示原图和矫正后的图像 cv2.imshow("Original Image", image) # 显示窗口标题为 "Original Image" 的原始图像 cv2.imshow("Corrected Image", image_s) # 显示窗口标题为 "Corrected Image" 的矫正后图像# 等待按键关闭窗口 cv2.waitKey(0) # 等待用户按下任意键后关闭所有窗口 cv2.destroyAllWindows() # 销毁所有窗口
相关文章:
pythonOpenCV篇:0基础带你python入门之常用函数
① 二值化函数 功能:将图像转换为二值图像(黑白图像),将像素值分为两种类别:前景(白)和背景(黑)。函数:cv2.threshold()参数: src:输…...
第十七届山东省职业院校技能大赛 中职组“网络安全”赛项资源任务书样题③
第十七届山东省职业院校技能大赛 中职组“网络安全”赛项资源任务书样题③ 模块A 基础设施设置与安全加固(200分)A-1 登录安全加固(Windows, Linux)A-2 Nginx安全策略(Linux)A-3日志监控(Windows)A-4中间件…...
【每日一题 基础题】验证回文串
LCR 018. 验证回文串 验证回文串 给定一个字符串 s ,验证 s 是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 本题中,将空字符串定义为有效的回文串 。 验证回文串 LCR 018. 验证回文串方法一:**筛选 判断…...
【Hadoop】-- hadoop3.x default port
Hadoop 3.x 修改了一些以前常用的默认端口,完整的默认端口列表,可点击下面配置文件获取信息: core-default.xmlhdfs-default.xmlhdfs-rbf-default.xmlyarn-default.xml...
 
SQL Server:只有MDF文件,如何附加数据库
第一步:先新建一个同名数据库,然后停止sql服务,删除新建数据库.ldf文件。 第二步:将要附加的数据库的.mdf文件覆盖刚新建的.mdf文件,并重启sql服务。 第三步:这时数据库DATA目录下只有一个.mdf文件…...
深入理解代理模式(Proxy):静态代理、动态代理与AOP
目录 1. 代理模式简介2. 静态代理3. 动态代理 3.1 JDK动态代理3.2 CGLIB动态代理 4. 面向切面编程(AOP)5. 实战示例6. 总结与最佳实践 1. 代理模式简介 代理模式是一种结构型设计模式,它允许我们提供一个代理来控制对其他对象的访问。代理模式在不改变原始类代码…...
 
项目中如何选择JVM垃圾回收器?
大家好,我是锋哥。今天分享关于【项目中如何选择JVM垃圾回收器?】面试题。希望对大家有帮助; 项目中如何选择JVM垃圾回收器? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在一个项目中选择合适的 JVM 垃圾回收器 (Garbage Collector, GC…...
 
如何借助5G网关实现油罐车安全在线监测
油罐车是常见的特种运输车辆,用以运送各种汽油、柴油、原油等油品,运输危险系数大,而且由于油罐车需要经常行驶在城区道路,为城市各个加油站点、企业工厂运输补充所需油料,因此也是危化品运输车辆的重点监测和管控对象…...
 
Edge SCDN的独特优势有哪些?
强大的边缘计算能力 Edge SCDN(边缘安全加速)是酷盾安全推出的边缘集分布式 DDoS 防护、CC 防护、WAF 防护、BOT 行为分析为一体的安全加速解决方案。通过边缘缓存技术,智能调度使用户就近获取所需内容,为用户提供稳定快速的访问…...
 
在Goland中对goroutine协程断点调试
在Goland中对goroutine协程断点调试 环境: Goland 参考了 chatgpt 的回复 进行断点调试的代码 package mainimport ("fmt""sync""time" )// worker 模拟处理任务 func worker(id int, wg *sync.WaitGroup) {defer wg.Done() // 确保任务完成后…...
 
解密分布式锁:保障系统一致性的关键
作者:后端小肥肠 🍇 我写过的文章中的相关代码放到了gitee,地址:xfc-fdw-cloud: 公共解决方案 🍊 有疑问可私信或评论区联系我。 🥑 创作不易未经允许严禁转载。 目录 1. 前言 2. 为何要使用分布式锁&…...
Redis 击穿、穿透与雪崩:深度解析与应对策略
在使用 Redis 作为缓存的系统架构中,缓存击穿、穿透和雪崩是三个常见且可能对系统性能产生严重影响的问题。深入理解这些问题并掌握有效的应对策略对于构建稳定、高效的系统至关重要。 一、缓存击穿 (一)问题描述 缓存击穿是指一个热点 key…...
 
8086处理器的寻址方式
概念 在计算机系统中,处理器操作和处理的是数值,那么,必定涉及数值从哪里来,处理后送到哪里去,这称为寻址方式(Addressing Mode)。 简单地说,寻址方式就是如何找到要操作的数据,以及如何找到存…...
 
Mask实现裁剪的原理浅析
简单来说,就是Mask会设置继承了MaskableGraphic的组件的Shader属性,进行特定的模板测试 一张普通的Image,当不挂Mask组件时,其默认Shader的模板缓存属性是这样的 当挂载上Mask时,会改变 Stencil ID变成了1ÿ…...
 
每隔一秒单片机向电脑发送一个16进制递增数据
SCON0x50 SM00 SM11(工作方式为方式一) REN1允许单片机从电脑接收数据 TB8 RB8 SM2是方式2和方式3直接配置为0 TI为发送中断请求标志位 由硬件配置为1 必须由 软件复位为0,RI为接收中断请求标志位,同理TI UART.c #include &l…...
 
逆向攻防世界CTF系列56-easy_Maze
逆向攻防世界CTF系列56-easy_Maze 64位无壳,看题目就知道是迷宫问题了 int __fastcall main(int argc, const char **argv, const char **envp){__int64 v3; // raxint v5[7][7]; // [rsp0h] [rbp-270h] BYREFint v6[104]; // [rspD0h] [rbp-1A0h] BYREFv6[52] 1…...
 
【Linux网络编程】应用层:HTTP协议 | URL | 简单实现一个HTTP服务器 | 永久重定向与临时重定向
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站 🌈个人主页: 南桥几晴秋 🌈C专栏: 南桥谈C 🌈C语言专栏: C语言学习系…...
 
电压调整电路汇总
目录: 一、LDO 1、LM1117 2、NCV33275 3、TLE42764 4、TPS7B67xx-Q1 5、总结 二、DCDC转换器 1、LM2576与LM2596 2、MC34063 一、LDO 1、LM1117 LM1117 是一款在 800mA 负载电流下具有 1.2V 压降的低压降稳压器。 LM1117 提供可调节电压版本,…...
 
day28 文件IO及进程线程基础
讨论光标共享情况 1.dup和dup2定义变量赋值都共享光标 2.使用两个描述符调用两次open函数打开同一个文件,不共享光标 #include <myhead.h>int main(int argc, const char *argv[]) {//1、描述符赋值给新的变量char buff[1024] "abcdefg";int ne…...
 
【Azure 架构师学习笔记】- Azure Function (1) --环境搭建和背景介绍
本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Function 】系列。 前言 随着无服务计算的兴起和大数据环境中的数据集成需求, 需要使用某些轻量级的服务,来实现一些简单操作。因此Azure Function就成了微软云上的一个必不可少的组成部分。 …...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
 
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
 
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
 
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
