python中,方法分為三類(lèi)實(shí)例方法、類(lèi)方法、靜態(tài)方法。代碼如下:

成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),涼州企業(yè)網(wǎng)站建設(shè),涼州品牌網(wǎng)站建設(shè),網(wǎng)站定制,涼州網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,涼州網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
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,打印對(duì)象內(nèi)存地址“__main__.Test object at 0x0293DCF0”
Test.ClassFun(); # 輸出ClassFun,打印類(lèi)位置 class '__main__.Test'
Test.StaticFun(); # 輸出StaticFun
t.StaticFun(); # 輸出StaticFun
t.ClassFun(); # 輸出ClassFun,打印類(lèi)位置 class '__main__.Test'
Test.InstanceFun(); # 錯(cuò)誤,TypeError: unbound method instanceFun() must be called with Test instance as first argument
Test.InstanceFun(t); # 輸出InstanceFun,打印對(duì)象內(nèi)存地址“__main__.Test object at 0x0293DCF0”
t.ClassFun(Test); # 錯(cuò)誤 classFun() takes exactly 1 argument (2 given)
class
A:
def
fun():
pass
#
這種就是靜態(tài)函數(shù),一般用裝飾器
@staticmethod
修飾
class
B:
def
fun1(self):
pass
#
這種就是成員函數(shù),類(lèi)實(shí)例可以直接調(diào)用
@classmethod
def
fun():
pass
#
這種是類(lèi)函數(shù),要求第一個(gè)參數(shù)表示類(lèi)(
cls
)。
Python使用靜態(tài)方法類(lèi)似函數(shù)工具使用,一般盡量少用靜態(tài)方法。
Python的靜態(tài)方法和類(lèi)成員方法都可以被類(lèi)或?qū)嵗L問(wèn),兩者概念不容易理清,但還是有區(qū)別的:
1)靜態(tài)方法無(wú)需傳入self參數(shù),類(lèi)成員方法需傳入代表本類(lèi)的cls參數(shù);
2)從第1條,靜態(tài)方法是無(wú)法訪問(wèn)實(shí)例變量的,而類(lèi)成員方法也同樣無(wú)法訪問(wèn)實(shí)例變量,但可以訪問(wèn)類(lèi)變量;
3)靜態(tài)方法有點(diǎn)像函數(shù)工具庫(kù)的作用,而類(lèi)成員方法則更接近類(lèi)似Java面向?qū)ο蟾拍钪械撵o態(tài)方法。
先看高級(jí)版的python3的canny的自適應(yīng)邊緣檢測(cè):
內(nèi)容:
1 canny的邊緣檢測(cè)的介紹。
2 三種方法的canny的邊緣檢測(cè),由淺入深地介紹:固定值的靜態(tài),可自調(diào)節(jié)的,自適應(yīng)的。
說(shuō)明:
1 環(huán)境:python3.8、opencv4.5.3和matplotlib3.4.3。
2 圖片:來(lái)自品閱網(wǎng)正版免費(fèi)圖庫(kù)。
3 實(shí)現(xiàn)自適應(yīng)閾值的canny邊緣檢測(cè)的參考代碼和文章:
上述的代碼,本機(jī)均有報(bào)錯(cuò),故對(duì)代碼進(jìn)行修改,注釋和運(yùn)行。
初級(jí)canny:
1 介紹:opencv中給出了canny邊緣檢測(cè)的接口,直接調(diào)用:
即可得到邊緣檢測(cè)的結(jié)果ret,其中,t1,t2是需要人為設(shè)置的閾值。
2 python的opencv的一行代碼即可實(shí)現(xiàn)邊緣檢測(cè)。
3 Canny函數(shù)及使用:
4 Canny邊緣檢測(cè)流程:
去噪 -- 梯度 -- 非極大值抑制 -- 滯后閾值
5 代碼:
6 操作和過(guò)程:
7 原圖:
8 疑問(wèn):
ret = cv2.canny(img,t1,t2),其中,t1,t2是需要人為設(shè)置的閾值,一般人怎么知道具體數(shù)值是多少,才是最佳的呀?所以,這是它的缺點(diǎn)。
中級(jí)canny:
1 中級(jí)canny,就是可調(diào)節(jié)的閾值,找到最佳的canny邊緣檢測(cè)效果。
2 采用cv2.createTrackbar來(lái)調(diào)節(jié)閾值。
3 代碼:
4 操作和效果:
5 原圖:
高級(jí)canny:
1 自適應(yīng)canny的算法:
ret = cv2.canny(img,t1,t2)
即算法在運(yùn)行過(guò)程中能夠自適應(yīng)地找到較佳的分割閾值t1,t2。
2 文件結(jié)構(gòu):
3 main.py代碼:
4 dog.py代碼:
5 bilateralfilt.py代碼:
6 原圖:
7 效果圖:本文第一個(gè)gif圖,此處省略。
小結(jié):
1 本文由淺入深,總結(jié)的很好,適合收藏。
2 對(duì)于理解python的opencv的canny的邊緣檢測(cè),很有幫助。
3 本文高級(jí)版canny自適應(yīng)的算法參考2篇文章,雖然我進(jìn)行代碼的刪除,注釋?zhuān)薷模瑑?yōu)化等操作,故我不標(biāo)注原創(chuàng),對(duì)原作者表達(dá)敬意。
4 自己總結(jié)和整理,分享出來(lái),希望對(duì)大家有幫助。
當(dāng)前文章:python3靜態(tài)函數(shù) python3定義函數(shù)
標(biāo)題URL:http://www.chinadenli.net/article8/dooepip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、網(wǎng)站排名、微信小程序、標(biāo)簽優(yōu)化、品牌網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)