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

创建型模式 (Python版)

单例模式

懒汉式

class SingleTon:# 类属性_obj = None  # 用来存储对象# 创造对象def __new__(cls, *args, **kwargs):# 如果对象不存在,就创造一个对象if cls._obj is None:cls._obj = super().__new__(cls, *args, *kwargs)# 返回对象return cls._objif __name__ == '__main__':obj_1 = SingleTon()  # 创造一个对象obj_2 = SingleTon()  # 再次创造一个对象print("obj_1的内存地址:", id(obj_1))  # obj_1的内存地址: 2801491317584print("obj_2的内存地址:", id(obj_2))  # obj_2的内存地址: 2801491317584print(obj_1 is obj_2)  # True

饿汉式

  • test.py
class SingleTon:pass# 创建一个对象
obj = SingleTon# 提供接口
def get_instance():return obj
  • main.py
from test import get_instanceif __name__ == '__main__':obj_1 = get_instance()  # 创建一个对象obj_2 = get_instance()  # 再创建一个对象print(obj_1 is obj_2)  	# True

工厂模式

简单工厂模式

"""实现:简单计算器(加减乘除)1. 提供一个抽象产品类2. 提供多个具体产品类3. 提供一个工厂类
"""from abc import ABC, abstractmethod# 计算器(抽象产品类)
class Calculator(ABC):  # 继承 ABC 抽象类def __init__(self):self.left_value = 0self.right_value = 0def set(self, left_value, right_value):self.left_value = left_valueself.right_value = right_valuereturn self@abstractmethoddef run(self):  # 抽象方法pass# 加法计算器(具体产品类)
class AddCalculator(Calculator):  # 继承 Calculator 类def run(self):return self.left_value + self.right_value# 减法计算器(具体产品类)
class SubCalculator(Calculator):  # 继承 Calculator 类def run(self):return self.left_value - self.right_value# 乘法计算器(具体产品类)
class MulCalculator(Calculator):  # 继承 Calculator 类def run(self):return self.left_value * self.right_value# 除法计算器(具体产品类)
class DivCalculator(Calculator):  # 继承 Calculator 类def run(self):if self.right_value == 0:raise "除数不能为零!"return self.left_value / self.right_value# 工厂类
class Factory:@staticmethoddef produce_calculator(char):  # 类方法match char:case "+":return AddCalculator()  # 创建对象case "-":return SubCalculator()  # 创建对象case "*":return MulCalculator()  # 创建对象case "/":return DivCalculator()  # 创建对象case _:raise "不支持其他的运算符!"if __name__ == '__main__':# 工厂生产4种类型的计算器产品add_calculator = Factory.produce_calculator("+")  # 加法计算器sub_calculator = Factory.produce_calculator("-")  # 减法计算器mul_calculator = Factory.produce_calculator("*")  # 乘法计算器div_calculator = Factory.produce_calculator("/")  # 除法计算器# 使用除法计算器res = div_calculator.set(10, 5).run()  # 设置左值(被除数)和右值(除数),然后运行print(res)  # 2.0

工厂方法模式

from abc import ABC, abstractmethod# 产品(抽象产品类)
class Product(ABC):  # 继承 ABC 抽象类# 抽象:此产品补充燃料的功能@abstractmethoddef fuel(self):pass# 抽象:此产品起飞的功能@abstractmethoddef fly(self):pass# 飞机(具体产品类)
class PlaneProduct(Product):  # 继承 Product 产品类# 实现:此产品补充燃料的功能def fuel(self):print(f"飞机-CS{id(self)},补充燃料中...")# 实现:此产品起飞的功能def fly(self):print(f"飞机-CS{id(self)},起飞!")# 火箭(具体产品类)
class RocketProduct(Product):  # 继承 Product 产品类# 实现:此产品补充燃料的功能def fuel(self):print(f"火箭-CS{id(self)},补充燃料中...")# 实现:此产品起飞的功能def fly(self):print(f"火箭-CS{id(self)},起飞!")# 工厂(抽象工厂类)
class Factory(ABC):# 抽象:生产产品@abstractmethoddef produce_product(self):pass# 飞机工厂(具体工厂类)
class PlaneFactory(Factory):# 具体:生产飞机产品def produce_product(self):return PlaneProduct()  # 创建对象,并返回出去# 火箭工厂(具体工厂类)
class RocketFactory(Factory):# 具体:生产火箭产品def produce_product(self):return RocketProduct()  # 创建对象,并返回出去# 演示
def work(factory):product = factory.produce_product()  # 工厂生产产品product.fuel()  # 使用产品的"补充燃料"功能product.fly()  # 使用产品"飞行"的功能if __name__ == '__main__':# 创建一个飞机工厂plane_factory = PlaneFactory()# 让飞机工厂干活work(plane_factory)# 创建一个火箭工厂rocket_factory = RocketFactory()# 让火箭工厂干活work(rocket_factory)

抽象工厂模式

from abc import ABC, abstractmethod# 抽象产品
class Product(ABC):@abstractmethoddef show(self):pass# 抽象键盘产品
class KeyBoard(Product):@abstractmethoddef show(self):pass# 抽象鼠标产品
class Mouse(Product):@abstractmethoddef show(self):pass# 具体键盘产品1
class MikaKeyBoard(KeyBoard):def show(self):print("Mika键盘")# 具体键盘产品2
class PikiKeyBoard(KeyBoard):def show(self):print("Piki键盘")# 具体鼠标产品1
class MikaMouse(Mouse):def show(self):print("Mika鼠标")# 具体鼠标产品2
class PikiMouse(Mouse):def show(self):print("Piki鼠标")# 抽象工厂类
class Factory(ABC):@abstractmethoddef produce_keyboard(self):pass@abstractmethoddef produce_mouse(self):pass# 具体工厂1
class MikaFactory(Factory):def produce_keyboard(self):return MikaKeyBoard()def produce_mouse(self):return MikaMouse()# 具体工厂2
class PikiFactory(Factory):def produce_keyboard(self):return PikiKeyBoard()def produce_mouse(self):return PikiMouse()# 测试
def work(factory):keyborad = factory.produce_keyboard()  # 工厂制作键盘mouse = factory.produce_mouse()  # 工厂制作鼠标keyborad.show()  # 查看键盘信息mouse.show()  # 查看鼠标信息if __name__ == '__main__':# 创造Mika工厂,让它运行工作factory = MikaFactory()work(factory)# 创建Piki工厂,让它运行工作factory = PikiFactory()work(factory)

建造者模式

"""小明想要给自己的"戴尔"电脑外接一些设备:Mika鼠标、Piki键盘小花想要给自己的"联想"电脑外接一些设备:Piki鼠标、Mika键盘1. 找到技术人员告诉需求2. 技术员工进行组装3. 检查组装情况
"""from abc import ABC, abstractmethod# 组装电脑(抽象)
class AssembleComputer(ABC):@abstractmethoddef install_mouse(self, brand):  # 安装鼠标(抽象)pass@abstractmethoddef install_keyboard(self, brand):  # 安装键盘(抽象)pass@abstractmethoddef show(self):  # 查看组装的状态(抽象)pass# 组装"戴尔"电脑(具体)
class AssembleDellComputer(AssembleComputer):def __init__(self):self.__installation_list = []  # 安装列表,用来记录当前已经成功安装了的组件def install_mouse(self, brand):self.__installation_list.append(f"{brand}鼠标")print(f"已安装:{brand}鼠标")def install_keyboard(self, brand):self.__installation_list.append(f"{brand}键盘")print(f"已安装:{brand}键盘")def show(self):print("此电脑的所有外接设备:", end="")for item in self.__installation_list:print(item, end=", ")print()# 组装"联想"电脑(具体)
class AssembleLenovoComputer(AssembleComputer):def __init__(self):self.__installation_list = []  # 安装列表,用来记录当前已经成功安装了的组件def install_mouse(self, brand):self.__installation_list.append(f"{brand}鼠标")print(f"已安装:{brand}鼠标")def install_keyboard(self, brand):self.__installation_list.append(f"{brand}键盘")print(f"已安装:{brand}键盘")def show(self):print("此电脑的所有外接设备:", end="")for item in self.__installation_list:print(item, end=", ")print()# 建造者(抽象)
class Builder(ABC):def __init__(self, computer_type):# self.product 里面保存(维护)着一个组装对象if computer_type == "戴尔":self._product = AssembleDellComputer()elif computer_type == "联想":self._product = AssembleLenovoComputer()else:raise "电脑类型错误!"@abstractmethoddef install_mouse(self, brand):pass@abstractmethoddef install_keyboard(self, brand):pass@abstractmethoddef check(self):pass# 建造者(具体)————技术人员
class Technician(Builder):# 技术人员安装鼠标def install_mouse(self, brand):print(f"技术人员正在安装{brand}鼠标...")self._product.install_mouse(brand)print(f"技术人员安装{brand}鼠标成功!")# 技术人员安装键盘def install_keyboard(self, brand):print(f"技术人员正在安装{brand}键盘...")self._product.install_keyboard(brand)print(f"技术人员安装{brand}键盘成功!")# 技术人员检查安装情况def check(self):print("技术人员正在检查设备的安装情况...")print("技术人员检查完毕,安装结果如下:")self._product.show()if __name__ == '__main__':# 创造一个负责组装戴尔电脑的技术人员t1 = Technician("戴尔")# 创造一个负责组装联想电脑的技术人员t2 = Technician("联想")# 小明告诉 t1 技术人员,组装 Mika鼠标、Piki键盘,技术人员根据要求进行安装t1.install_mouse("Mika")t1.install_keyboard("Piki")# 小花告诉 t2 技术人员,组装 Piki鼠标、Mika键盘,技术人员根据要求进行安装t2.install_mouse("Piki")t2.install_keyboard("Mika")# t1 技术人员检查组装情况t1.check()# t2 技术人员检查组装情况t2.check()

原型模式

import copy  # 导入copy模块,用于深度复制对象# 定义一个名为 Prototype(原型)的类,用于管理对象的注册、注销和克隆
class Prototype:def __init__(self):self._objects = {}  # 初始化一个字典来存储注册的对象,键为名称,值为对象实例def register_object(self, name, obj):"""  注册一个对象到_objects字典中  :param name: 对象的名称  :param obj: 要注册的对象实例  """self._objects[name] = objdef unregister_object(self, name):"""  从_objects字典中注销一个对象  :param name: 要注销的对象的名称  """del self._objects[name]def clone(self, name, **attr):"""  克隆一个已注册的对象,并更新其内部属性字典  :param name: 要克隆的对象的名称  :param attr: 要更新的属性字典,使用关键字参数传入  :return: 克隆并更新后的对象实例  """obj = copy.deepcopy(self._objects.get(name))  # 使用deepcopy进行深度复制,得到一个新的对象实例obj.__dict__.update(attr)  # 更新对象的__dict__属性,即更新其内部属性。  attr == {'a': 1, 'b': 2, 'c': 3}return objdef test():# 定义一个类A,用于演示class A:def __str__(self):return "I am A"# 创建A的一个实例aa = A()# 创建一个Prototype实例,用于管理对象prototype = Prototype()# 将a注册到prototype中,名称为'a'prototype.register_object('a', a)# 克隆a并更新其内部属性,得到bb = prototype.clone('a', a=1, b=2, c=3)# 打印a的字符串表示print(a)# 打印b的内部属性字典print(b.__dict__)# 尝试打印b的属性a, b, cprint(b.a)print(b.b)print(b.c)if __name__ == '__main__':test()

补充说明

  • 原型模式(Prototype Pattern)是一种创建型设计模式,它允许一个对象通过复制其自身的内部状态来创建新的对象实例。

  • 这种复制过程可以被称为“克隆”。

  • 原型模式提供了一种不依赖于类的构造函数来创建对象实例的方式,而是使用现有的对象实例来创建新的对象。

原型模式的作用

  1. 性能优化:当对象的创建过程非常复杂或者代价非常高时,使用原型模式可以避免重复执行这些复杂的操作,从而提高性能。通过克隆一个已经存在的对象,可以快速地生成新的对象实例。
  2. 避免子类的构造函数被频繁调用:在继承层次较深的场景下,频繁地调用子类的构造函数可能会带来性能问题。通过原型模式,可以避免这种情况,因为对象的创建是通过克隆来完成的。
  3. 动态扩展:由于原型模式允许在运行时动态地添加或删除对象,因此它可以支持动态扩展。这意味着可以根据需要动态地改变系统中对象的数量或类型。
  4. 简化对象创建:当对象创建涉及复杂的配置或设置时,原型模式可以提供一个更简单的创建对象的方式。通过克隆一个已经配置好的对象实例,可以快速地生成具有相同配置的新对象。

示例代码中的原型模式

  • 在示例代码中,Prototype类就是一个原型管理器的实现。
  • 它维护了一个存储已注册对象的字典(_objects)。
  • 通过register_object()方法可以将对象注册到字典中,通过unregister_object()方法可以从字典中注销对象。
  • clone()方法则用于克隆已注册的对象,并允许通过关键字参数来更新克隆对象的属性。
  • 这个示例代码中的A类是一个简单的类,用于演示原型模式的使用。
  • 通过创建一个A类的实例a,并将其注册到Prototype实例中,然后调用clone()方法来克隆a并更新其属性,可以得到一个新的对象实例b
  • 这个过程中,ab是独立的对象实例,但它们具有相同的初始状态(因为ba的克隆),并且b的属性可以被单独更新。

总结

创建型模式总结

  • 单例模式:创建一个全局的对象
  • 工厂方法模式:实现单个类的对象的创建
  • 抽象工厂模式:实现多个类的对象的创建
  • 建造者模式:实现复杂类的对象的创建
  • 原型模式:实现自身类的克隆

相关文章:

创建型模式 (Python版)

单例模式 懒汉式 class SingleTon:# 类属性_obj None # 用来存储对象# 创造对象def __new__(cls, *args, **kwargs):# 如果对象不存在,就创造一个对象if cls._obj is None:cls._obj super().__new__(cls, *args, *kwargs)# 返回对象return cls._objif __name__…...

​​​【收录 Hello 算法】9.4 小结

目录 9.4 小结 1. 重点回顾 2. Q & A 9.4 小结 1. 重点回顾 图由顶点和边组成,可以表示为一组顶点和一组边构成的集合。相较于线性关系(链表)和分治关系(树),网络关系(图&am…...

MYSQL数据库基础语法

目录 友情提醒第一章:数据库简述1)数据库简述2)常见的数据库软件3)MySQL数据库安装和连接4)SQL语句分类①DDL(Data Definition)②DML(Data Manipulation)③DQL&#xff0…...

R实验 参数检验(二)

实验目的:掌握正态分布和二项分布中,功效与样本容量之间的关系;学会利用R软件完成一个正态总体方差和两个正态总体方差比的区间估计和检验。 实验内容: (习题5.28)一种药物可治疗眼内高压,目的…...

【Linux】进程信号及相关函数/系统调用的简单认识与使用

文章目录 前言一、相关函数/系统调用1. signal2. kill3. abort (库函数)4. raise (库函数)5. alarm 前言 现实生活中, 存在着诸多信号, 比如红绿灯, 上下课铃声…我们在接收到信号时, 就会做出相应的动作. 对于进程也是如此的, 进程也会收到来自 OS 发出的信号, 根据信号的不同…...

Spring (14)什么是Spring Boot

Spring Boot是一个开源的Java基础框架,旨在简化Spring应用的创建和开发过程。Spring Boot通过提供一套默认配置(convention over configuration),自动配置和启动器(starters)来减少开发者的开发工作量和配置…...

区间预测 | Matlab实现CNN-KDE卷积神经网络结合核密度估计多置信区间多变量回归区间预测

区间预测 | Matlab实现CNN-KDE卷积神经网络结合核密度估计多置信区间多变量回归区间预测 目录 区间预测 | Matlab实现CNN-KDE卷积神经网络结合核密度估计多置信区间多变量回归区间预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现CNN-KDE卷积神经网络结合…...

Java集合框架全景解读:从源码到实践精通指南

1. Java集合框架简介 在Java中,集合框架是用于存储和处理数据集合的一组类和接口。它提供了一系列的数据结构,比如列表(List)、集(Set)和映射(Map)。这些数据结构为开发者处理数据提…...

Python | Leetcode Python题解之第107题二叉树的层序遍历II

题目: 题解: class Solution:def levelOrderBottom(self, root: TreeNode) -> List[List[int]]:levelOrder list()if not root:return levelOrderq collections.deque([root])while q:level list()size len(q)for _ in range(size):node q.popl…...

H4vdo 台湾APT-27视频投放工具

地址:https://github.com/MartinxMax/H4vdo 视频 关于 H4vdo RTMP lock 屏播放视频工具,可以向目标发送有效载荷,播放目标的屏幕内容。目标无法曹作计算机 使用方法 安装依赖 根据你的操作系统选择一个安装程序 RTMP 服务端 ./rtsp-simple-server.…...

数据结构(树)

1.树的概念和结构 树,顾名思义,它看起来像一棵树,是由n个结点组成的非线性的数据结构。 下面就是一颗树: 树的一些基本概念: 结点的度:一个结点含有的子树的个数称为该结点的度; 如上图&#…...

HTML静态网页成品作业(HTML+CSS)——川西旅游介绍网页(2个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有2个页面。 二、作品演示 三、代…...

MySQL数据库单表查询中查询条件的写法

1.使用比较运算符作为查询条件 ; !; >; >; <; <; 如上图所示&#xff0c;可以使用命令select 字段&#xff0c;字段 from 表名 where Gender “M”; 即挑选出Gender “M” 的教师&#xff0c; 如上图所示&#xff0c;可以使用命令select 字段&#xff0c;…...

SQL靶场搭建

概述 简单介绍一下SQL靶场的搭建&#xff0c;以及在搭建过程中遇到的一些问题。使用该软件搭建靶场相对简单&#xff0c;适合新手小白。当然&#xff0c;也可以在自己的虚拟机下进行搭建&#xff0c;相对来说就较为复杂。本章主要讲解使用Phpstudy进行SQL靶场搭建。 这里我推…...

Cocos Creator 帧动画播放组件制作详解

前言 Cocos Creator 是一个强大的游戏开发工具&#xff0c;提供了丰富的功能和组件&#xff0c;其中帧动画播放组件是游戏开发中常用的组件之一&#xff0c;通过帧动画播放组件可以实现角色动画、特效动画等效果。本文将详细介绍如何使用 Cocos Creator 制作帧动画播放组件&am…...

基于STM32控制的双轮自平衡小车的设计

基于STM32控制的双轮自平衡小车的设计是一项涉及电子、控制理论、机械设计和编程的综合工程。以下是关于该设计的一个概述&#xff0c;包括关键组件、控制策略和示例代码。 设计概述 1. 项目背景 自平衡小车作为一种智能控制系统&#xff0c;其设计和实现涉及到多个学科领域…...

Dijkstra算法在《庆余年》中的应用:范闲的皇宫之旅

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容&#xff0c;和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣&#xff01; 推荐&#xff1a;数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航&#xff1a; LeetCode解锁100…...

HTML静态网页成品作业(HTML+CSS)——利物浦足球俱乐部介绍网页设计制作(5个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;共有5个页面。 二、作品演示 三、代码目录 四、网站代码 HTML部分代…...

mac 查看占用80端口的命令

在 Mac 上&#xff0c;如果你想查看哪个进程正在使用 80 端口&#xff0c;你可以使用 lsof 命令。这个命令非常强大&#xff0c;用于列出被进程打开或使用的文件信息。 打开你的终端&#xff0c;并输入以下命令&#xff1a; sudo lsof -i :80这里&#xff0c;-i :80 选项告诉…...

【Qt常用控件】—— 布局管理器

目录 前言 &#xff08;一&#xff09;垂直布局 &#xff08;二&#xff09;水平布局 &#xff08;三&#xff09;网格布局 &#xff08;四&#xff09;表单布局 &#xff08;五&#xff09;分组布局 &#xff08;六&#xff09;Spacer 总结 前言 之前使⽤Qt在界⾯上…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...