十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
python中,方法分為三類實例方法、類方法、靜態(tài)方法。代碼如下:
成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設,涼州企業(yè)網(wǎng)站建設,涼州品牌網(wǎng)站建設,網(wǎng)站定制,涼州網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,涼州網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(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,打印對象內(nèi)存地址“__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,打印對象內(nèi)存地址“__main__.Test object at 0x0293DCF0”
t.ClassFun(Test); # 錯誤 classFun() takes exactly 1 argument (2 given)
class
A:
def
fun():
pass
#
這種就是靜態(tài)函數(shù),一般用裝飾器
@staticmethod
修飾
class
B:
def
fun1(self):
pass
#
這種就是成員函數(shù),類實例可以直接調用
@classmethod
def
fun():
pass
#
這種是類函數(shù),要求第一個參數(shù)表示類(
cls
)。
Python使用靜態(tài)方法類似函數(shù)工具使用,一般盡量少用靜態(tài)方法。
Python的靜態(tài)方法和類成員方法都可以被類或實例訪問,兩者概念不容易理清,但還是有區(qū)別的:
1)靜態(tài)方法無需傳入self參數(shù),類成員方法需傳入代表本類的cls參數(shù);
2)從第1條,靜態(tài)方法是無法訪問實例變量的,而類成員方法也同樣無法訪問實例變量,但可以訪問類變量;
3)靜態(tài)方法有點像函數(shù)工具庫的作用,而類成員方法則更接近類似Java面向對象概念中的靜態(tài)方法。
先看高級版的python3的canny的自適應邊緣檢測:
內(nèi)容:
1 canny的邊緣檢測的介紹。
2 三種方法的canny的邊緣檢測,由淺入深地介紹:固定值的靜態(tài),可自調節(jié)的,自適應的。
說明:
1 環(huán)境:python3.8、opencv4.5.3和matplotlib3.4.3。
2 圖片:來自品閱網(wǎng)正版免費圖庫。
3 實現(xiàn)自適應閾值的canny邊緣檢測的參考代碼和文章:
上述的代碼,本機均有報錯,故對代碼進行修改,注釋和運行。
初級canny:
1 介紹:opencv中給出了canny邊緣檢測的接口,直接調用:
即可得到邊緣檢測的結果ret,其中,t1,t2是需要人為設置的閾值。
2 python的opencv的一行代碼即可實現(xiàn)邊緣檢測。
3 Canny函數(shù)及使用:
4 Canny邊緣檢測流程:
去噪 -- 梯度 -- 非極大值抑制 -- 滯后閾值
5 代碼:
6 操作和過程:
7 原圖:
8 疑問:
ret = cv2.canny(img,t1,t2),其中,t1,t2是需要人為設置的閾值,一般人怎么知道具體數(shù)值是多少,才是最佳的呀?所以,這是它的缺點。
中級canny:
1 中級canny,就是可調節(jié)的閾值,找到最佳的canny邊緣檢測效果。
2 采用cv2.createTrackbar來調節(jié)閾值。
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篇文章,雖然我進行代碼的刪除,注釋,修改,優(yōu)化等操作,故我不標注原創(chuàng),對原作者表達敬意。
4 自己總結和整理,分享出來,希望對大家有幫助。