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

pythonOpenCV篇:0基础带你python入门之常用函数

二值化函数

  • 功能:将图像转换为二值图像(黑白图像),将像素值分为两种类别:前景(白)和背景(黑)。
  • 函数cv2.threshold()
  • 参数
    1. src:输入图像(通常为灰度图像)。
    2. thresh:阈值值,用于将像素分割为前景和背景。
    3. maxval:满足条件的像素值赋值为此值(通常为255)。
    4. type:阈值类型,例如:
      • cv2.THRESH_BINARY:大于阈值的像素赋值为maxval,否则为0。
      • cv2.THRESH_BINARY_INV:反向二值化。
      • cv2.THRESH_TRUNC:大于阈值的像素赋值为阈值,其余保持不变。
      • cv2.THRESH_TOZERO:小于阈值的像素赋值为0。
      • cv2.THRESH_TOZERO_INV:大于阈值的像素赋值为0。
  • 返回值
    1. retval:实际使用的阈值(当选择 Otsu 或自适应阈值时有意义)。
    2. 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()
  • 参数
    1. src:输入图像(必须是灰度图)。
    2. maxValue:满足条件的像素值赋值为此值(通常为255)。
    3. adaptiveMethod:自适应阈值计算方法:
      • cv2.ADAPTIVE_THRESH_MEAN_C:取邻域均值作为阈值。
      • cv2.ADAPTIVE_THRESH_GAUSSIAN_C:取邻域高斯加权均值作为阈值。
    4. thresholdType:阈值类型(通常为 cv2.THRESH_BINARYcv2.THRESH_BINARY_INV)。
    5. blockSize:邻域大小(必须为奇数)。
    6. 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()
  • 参数
    1. src:输入图像(二值图像或灰度图像)。
    2. kernel:结构元素(形状和大小由 cv2.getStructuringElement() 定义)。
    3. 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()
  • 参数
    1. src:输入图像(二值图像或灰度图像)。
    2. kernel:结构元素。
    3. 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()
  • 参数
    1. src:输入图像。
    2. M:2x3 的仿射变换矩阵(通过 cv2.getAffineTransform() 生成)。
    3. dsize:输出图像的尺寸(宽度和高度)。
    4. flags:插值方法(如 cv2.INTER_LINEAR)。
    5. borderModeborderValue:用于处理边界像素。
  • 返回值
    • 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()
  • 参数
    1. src:输入图像。
    2. M:3x3 的透视变换矩阵(通过 cv2.getPerspectiveTransform() 生成)。
    3. dsize:输出图像的尺寸。
    4. flagsborderModeborderValue:与仿射变换类似。
  • 返回值
    • 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入门之常用函数

① 二值化函数 功能&#xff1a;将图像转换为二值图像&#xff08;黑白图像&#xff09;&#xff0c;将像素值分为两种类别&#xff1a;前景&#xff08;白&#xff09;和背景&#xff08;黑&#xff09;。函数&#xff1a;cv2.threshold()参数&#xff1a; src&#xff1a;输…...

第十七届山东省职业院校技能大赛 中职组“网络安全”赛项资源任务书样题③

第十七届山东省职业院校技能大赛 中职组“网络安全”赛项资源任务书样题③ 模块A 基础设施设置与安全加固(200分)A-1 登录安全加固&#xff08;Windows, Linux&#xff09;A-2 Nginx安全策略&#xff08;Linux&#xff09;A-3日志监控&#xff08;Windows&#xff09;A-4中间件…...

【每日一题 基础题】验证回文串

LCR 018. 验证回文串 验证回文串 给定一个字符串 s &#xff0c;验证 s 是否是回文串&#xff0c;只考虑字母和数字字符&#xff0c;可以忽略字母的大小写。 本题中&#xff0c;将空字符串定义为有效的回文串 。 验证回文串 LCR 018. 验证回文串方法一&#xff1a;**筛选 判断…...

【Hadoop】-- hadoop3.x default port

Hadoop 3.x 修改了一些以前常用的默认端口,完整的默认端口列表,可点击下面配置文件获取信息: core-default.xmlhdfs-default.xmlhdfs-rbf-default.xmlyarn-default.xml...

SQL Server:只有MDF文件,如何附加数据库

第一步&#xff1a;先新建一个同名数据库&#xff0c;然后停止sql服务&#xff0c;删除新建数据库.ldf文件。 第二步&#xff1a;将要附加的数据库的.mdf文件覆盖刚新建的.mdf文件&#xff0c;并重启sql服务。 第三步&#xff1a;这时数据库DATA目录下只有一个.mdf文件&#xf…...

深入理解代理模式(Proxy):静态代理、动态代理与AOP

目录 1. 代理模式简介2. 静态代理3. 动态代理 3.1 JDK动态代理3.2 CGLIB动态代理 4. 面向切面编程(AOP)5. 实战示例6. 总结与最佳实践 1. 代理模式简介 代理模式是一种结构型设计模式&#xff0c;它允许我们提供一个代理来控制对其他对象的访问。代理模式在不改变原始类代码…...

项目中如何选择JVM垃圾回收器?

大家好&#xff0c;我是锋哥。今天分享关于【项目中如何选择JVM垃圾回收器?】面试题。希望对大家有帮助&#xff1b; 项目中如何选择JVM垃圾回收器? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在一个项目中选择合适的 JVM 垃圾回收器 (Garbage Collector, GC…...

如何借助5G网关实现油罐车安全在线监测

油罐车是常见的特种运输车辆&#xff0c;用以运送各种汽油、柴油、原油等油品&#xff0c;运输危险系数大&#xff0c;而且由于油罐车需要经常行驶在城区道路&#xff0c;为城市各个加油站点、企业工厂运输补充所需油料&#xff0c;因此也是危化品运输车辆的重点监测和管控对象…...

Edge SCDN的独特优势有哪些?

强大的边缘计算能力 Edge SCDN&#xff08;边缘安全加速&#xff09;是酷盾安全推出的边缘集分布式 DDoS 防护、CC 防护、WAF 防护、BOT 行为分析为一体的安全加速解决方案。通过边缘缓存技术&#xff0c;智能调度使用户就近获取所需内容&#xff0c;为用户提供稳定快速的访问…...

在Goland中对goroutine协程断点调试

在Goland中对goroutine协程断点调试 环境: Goland 参考了 chatgpt 的回复 进行断点调试的代码 package mainimport ("fmt""sync""time" )// worker 模拟处理任务 func worker(id int, wg *sync.WaitGroup) {defer wg.Done() // 确保任务完成后…...

解密分布式锁:保障系统一致性的关键

作者&#xff1a;后端小肥肠 &#x1f347; 我写过的文章中的相关代码放到了gitee&#xff0c;地址&#xff1a;xfc-fdw-cloud: 公共解决方案 &#x1f34a; 有疑问可私信或评论区联系我。 &#x1f951; 创作不易未经允许严禁转载。 目录 1. 前言 2. 为何要使用分布式锁&…...

Redis 击穿、穿透与雪崩:深度解析与应对策略

在使用 Redis 作为缓存的系统架构中&#xff0c;缓存击穿、穿透和雪崩是三个常见且可能对系统性能产生严重影响的问题。深入理解这些问题并掌握有效的应对策略对于构建稳定、高效的系统至关重要。 一、缓存击穿 &#xff08;一&#xff09;问题描述 缓存击穿是指一个热点 key…...

8086处理器的寻址方式

概念 在计算机系统中&#xff0c;处理器操作和处理的是数值&#xff0c;那么&#xff0c;必定涉及数值从哪里来&#xff0c;处理后送到哪里去&#xff0c;这称为寻址方式(Addressing Mode)。 简单地说&#xff0c;寻址方式就是如何找到要操作的数据&#xff0c;以及如何找到存…...

Mask实现裁剪的原理浅析

简单来说&#xff0c;就是Mask会设置继承了MaskableGraphic的组件的Shader属性&#xff0c;进行特定的模板测试 一张普通的Image&#xff0c;当不挂Mask组件时&#xff0c;其默认Shader的模板缓存属性是这样的 当挂载上Mask时&#xff0c;会改变 Stencil ID变成了1&#xff…...

每隔一秒单片机向电脑发送一个16进制递增数据

SCON0x50 SM00 SM11&#xff08;工作方式为方式一&#xff09; REN1允许单片机从电脑接收数据 TB8 RB8 SM2是方式2和方式3直接配置为0 TI为发送中断请求标志位 由硬件配置为1 必须由 软件复位为0&#xff0c;RI为接收中断请求标志位&#xff0c;同理TI UART.c #include &l…...

逆向攻防世界CTF系列56-easy_Maze

逆向攻防世界CTF系列56-easy_Maze 64位无壳&#xff0c;看题目就知道是迷宫问题了 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服务器 | 永久重定向与临时重定向

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站 &#x1f308;个人主页&#xff1a; 南桥几晴秋 &#x1f308;C专栏&#xff1a; 南桥谈C &#x1f308;C语言专栏&#xff1a; C语言学习系…...

电压调整电路汇总

目录&#xff1a; 一、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 提供可调节电压版本&#xff0c…...

day28 文件IO及进程线程基础

讨论光标共享情况 1.dup和dup2定义变量赋值都共享光标 2.使用两个描述符调用两次open函数打开同一个文件&#xff0c;不共享光标 #include <myhead.h>int main(int argc, const char *argv[]) {//1、描述符赋值给新的变量char buff[1024] "abcdefg";int ne…...

【Azure 架构师学习笔记】- Azure Function (1) --环境搭建和背景介绍

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Function 】系列。 前言 随着无服务计算的兴起和大数据环境中的数据集成需求&#xff0c; 需要使用某些轻量级的服务&#xff0c;来实现一些简单操作。因此Azure Function就成了微软云上的一个必不可少的组成部分。 …...

前端文件下载

这里写自定义目录标题 前端文件下载方法使用a标签使用iframe标签二进制流 前端文件下载方法 使用a标签 /*** 文件下载方法 使用a标签* 存在浏览器下载时&#xff0c;太快的话&#xff0c;会取消上次的下载请求* param {*} href* param {*} filename*/ export function downlo…...

前端成长之路:HTML(3)

在HTML中&#xff0c;有列表标签。列表最大的特点是整齐、简洁、有序&#xff0c;用列表进行布局会更加自由方便。根据使用的情景不同&#xff0c;可以将列表分为三大类&#xff1a;无序列表、有序列表和自定义列表。 无序列表 在HTML中使用<ul>标签定义一个无序列表&a…...

无人机自动机库的功能与作用!

一、无人机自动机库的功能 智能停放与管理 无人机自动机库为无人机提供了一个安全、可靠的停放环境。通过先进的感知技术和安全防护措施&#xff0c;它能够实时监测周围环境&#xff0c;确保无人机免受恶劣天气或潜在风险的侵害。 无人机在机库内可以实现智能停放&#xff0…...

ubuntu 新建脚本shell并增加图标 双击应用实现python运行

1.使用nano创建shell脚本文件 需要在终端窗口中输入“nano”以打开文本编辑器。 nano 在创建脚本文件前&#xff0c;我们要了解脚本文件是如何运行的&#xff1a; 直接运行&#xff1a;直接在终端直接输入需要运行的脚本文件名称&#xff0c;系统或用缺省版本的shell运行脚…...

ANR 分析SOP

遇到ANR问题不要慌&#xff0c;大部分情况下可能是系统or测试手段问题&#xff0c;我们按照如下关键字排查定位 文章目录 1 是否是 heapdump 导致&#xff1f;1.1 dump开始1.2 dump结束 1 是否是 heapdump 导致&#xff1f; 使用 hprof: heap dump 关键词过滤&#xff0c;在d…...

COLA学习之环境搭建(三)

小伙伴们&#xff0c;你们好&#xff0c;我是老寇&#xff0c;上一节&#xff0c;我们学习了COLA代码规范&#xff0c;继续跟老寇学习COLA环境搭建 首先&#xff0c;打开GitHub&#xff0c;搜索 COLA 请给这个COLA项目点个Star&#xff0c;养成好习惯&#xff0c;然后Fork到自…...

CSS输入框动态伸缩动效

前言 下面我们将会做出如下图输入框样式&#xff0c;并且附上组件代码&#xff0c;有特殊需求的可以自行优化同理&#xff0c;下拉框的话只要把el-input标签修改掉即可 MyInput组件 <template><div class"my-input" click.stop"showInput !showInput…...

hbuilder 安卓app手机调试中基座如何设置

app端使用基座 手机在线预览功能 1.点击运行 2.点击运行到手机或者模拟器 3.制作自定义调试基座 4.先生成证书【可以看我上一篇文档写的有】&#xff0c;点击打包 5.打包出android自定义调试基座【android_debug.apk】,【就跟app打包一样需要等个几分钟】 6.点击运行到手…...

探索视觉与语言模型的可扩展性

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…...

sock_recvmsg函数

sock_recvmsg 是一个在 Linux 内核中用于处理接收网络数据的函数。它通常与套接字 (socket) 操作相关,特别是在网络协议栈中用于处理从网络中接收到的数据。这个函数是内核的一部分,提供了一种机制把接收到的数据从网络协议栈转移到用户空间,或者在内核内进一步处理。 以下是…...

网站导航上的图片做多大尺寸/直通车怎么开

2019独角兽企业重金招聘Python工程师标准>>> 前面介绍Mule ESB使用的系列文章中我们使用了自定义的Java Transformer和Java Component&#xff0c;用于接收和处理Mule Message。然而我们使用的Transformer和Component都必须实现AbstractTransformer接口或者org.mule…...

网页制作培训班培训/网站站长seo推广

标记、元素、链接、路径 01.HTML和CSS是用来创建网页的语言。 02.Web服务器存储并提供由HTML和CSS创建的网页。浏览器接收网页并基于HTML和CSS 显示其中的内容。 03.HTML是超文本标记语言&#xff08;HyperText Markup Language&#xff09;的缩写&#xff0c;用来结构化网页。…...

关键词优化怎样/丽水百度seo

转自&#xff1a;https://www.pinlue.com/article/2021/05/2918/4511619339951.html...

网站流量数据查询/网站媒体推广

在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。 现在,可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线,这些直线需要同时满足满足: nums1[i] == nums2[j] 且绘制的直线不与任何其他连线(非水平线)相交。 请注意,连线即使在端点也不能相交:每个…...

wordpress the7安装教程/中视频自媒体账号注册下载

【击鼓传花】&#xff0c;可能是大家从小到大玩得最多的一个集体游戏了&#xff0c;就是几个人围成一个圈坐在一起&#xff0c;鼓声响起来即开始传花&#xff0c;鼓声一停&#xff0c;花传到了谁的手上就由谁来表演节目。一、游戏意义1、由于“形势所迫”,大家都会放下手中的事…...

一个网站建设域名的构思/北京最新疫情

作者&#xff1a;gnuhpc 出处&#xff1a;http://www.cnblogs.com/gnuhpc/ 1.简介 NFS(Network File System, 网络文件系统)可以通过网络将分享不同主机(不同的OS)的目录——可以通过NFS挂载远程主机的目录, 访问该目录就像访问本地目录一样! 一般而言, 使用nfs能够方便地使…...