重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
python中,方法分为三类实例方法、类方法、静态方法。代码如下:
成都创新互联公司是一家集网站建设,凉州企业网站建设,凉州品牌网站建设,网站定制,凉州网站建设报价,网络营销,网络优化,凉州网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
class Test(object):
def InstanceFun(self):
print("InstanceFun");
print(self);
@classmethod
def ClassFun(cls):
print("ClassFun");
print(cls);
@staticmethod
def StaticFun():
print("StaticFun");
t = Test();
t.InstanceFun();# 输出InstanceFun,打印对象内存地址“__main__.Test object at 0x0293DCF0”
Test.ClassFun(); # 输出ClassFun,打印类位置 class '__main__.Test'
Test.StaticFun(); # 输出StaticFun
t.StaticFun(); # 输出StaticFun
t.ClassFun(); # 输出ClassFun,打印类位置 class '__main__.Test'
Test.InstanceFun(); # 错误,TypeError: unbound method instanceFun() must be called with Test instance as first argument
Test.InstanceFun(t); # 输出InstanceFun,打印对象内存地址“__main__.Test object at 0x0293DCF0”
t.ClassFun(Test); # 错误 classFun() takes exactly 1 argument (2 given)
class
A:
def
fun():
pass
#
这种就是静态函数,一般用装饰器
@staticmethod
修饰
class
B:
def
fun1(self):
pass
#
这种就是成员函数,类实例可以直接调用
@classmethod
def
fun():
pass
#
这种是类函数,要求第一个参数表示类(
cls
)。
Python使用静态方法类似函数工具使用,一般尽量少用静态方法。
Python的静态方法和类成员方法都可以被类或实例访问,两者概念不容易理清,但还是有区别的:
1)静态方法无需传入self参数,类成员方法需传入代表本类的cls参数;
2)从第1条,静态方法是无法访问实例变量的,而类成员方法也同样无法访问实例变量,但可以访问类变量;
3)静态方法有点像函数工具库的作用,而类成员方法则更接近类似Java面向对象概念中的静态方法。
先看高级版的python3的canny的自适应边缘检测:
内容:
1 canny的边缘检测的介绍。
2 三种方法的canny的边缘检测,由浅入深地介绍:固定值的静态,可自调节的,自适应的。
说明:
1 环境:python3.8、opencv4.5.3和matplotlib3.4.3。
2 图片:来自品阅网正版免费图库。
3 实现自适应阈值的canny边缘检测的参考代码和文章:
上述的代码,本机均有报错,故对代码进行修改,注释和运行。
初级canny:
1 介绍:opencv中给出了canny边缘检测的接口,直接调用:
即可得到边缘检测的结果ret,其中,t1,t2是需要人为设置的阈值。
2 python的opencv的一行代码即可实现边缘检测。
3 Canny函数及使用:
4 Canny边缘检测流程:
去噪 -- 梯度 -- 非极大值抑制 -- 滞后阈值
5 代码:
6 操作和过程:
7 原图:
8 疑问:
ret = cv2.canny(img,t1,t2),其中,t1,t2是需要人为设置的阈值,一般人怎么知道具体数值是多少,才是最佳的呀?所以,这是它的缺点。
中级canny:
1 中级canny,就是可调节的阈值,找到最佳的canny边缘检测效果。
2 采用cv2.createTrackbar来调节阈值。
3 代码:
4 操作和效果:
5 原图:
高级canny:
1 自适应canny的算法:
ret = cv2.canny(img,t1,t2)
即算法在运行过程中能够自适应地找到较佳的分割阈值t1,t2。
2 文件结构:
3 main.py代码:
4 dog.py代码:
5 bilateralfilt.py代码:
6 原图:
7 效果图:本文第一个gif图,此处省略。
小结:
1 本文由浅入深,总结的很好,适合收藏。
2 对于理解python的opencv的canny的边缘检测,很有帮助。
3 本文高级版canny自适应的算法参考2篇文章,虽然我进行代码的删除,注释,修改,优化等操作,故我不标注原创,对原作者表达敬意。
4 自己总结和整理,分享出来,希望对大家有帮助。