日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

二值化图像去除小黑点_python与图像工程(2020.10.11)

發布時間:2024/9/15 python 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二值化图像去除小黑点_python与图像工程(2020.10.11) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、think python——字符串str、列表list、字典dict、元組tuple的比較

在think python的學習中,第八、十、十一、十二章介紹了四種相似的數據類型:字符串、列表、字典、元組,四者常常結合使用,因此基于書中內容對四者的區別進行簡單總結:

1.基本

下面是字符串、列表、字典、元組的例子

zifuchuan='abc123' liebiao=[a,b,c,1,2,3] zidian={'a':1,'b':2,'c':3} yuanzu=('a','b','c',1,2,3,[1,2],(1,2))

因此這四種類型在形式上有著明顯區別:

  • 字符串是字符的序列,索引為整數
  • 列表是多個值的序列,值可以為字符串、浮點數、整數、另一個列表,索引為整數
  • 字典是索引與值的關聯(鍵值對)的集合,與列表和字符串不同,該索引不必為整數
  • 元組是也是值的序列,值可以為字符串、列表、元組等等,索引為整數,與列表非常相似,但存在著其他不同

2.有序性

think python書中的描述為,字符串、列表、元組都是有序的,而字典是無序的,也就是說遍歷字典所有的鍵,結果的順序是不可知的

def print_hist(h):for c in h:print(c, h[c]) zidian={'a':1,'b':2,'c':3} print_hist(zidian)

但是結果:

a 1
b 2
c 3

這個結果保持不變,經過查閱資料發現,Python3.6之后字典函數dict的內部算法被改變了,也為有序的。

因此,只有3.6之前的版本的字典是無序的,其他皆為有序。

3.可變性

字符串和元組均不可變,列表和字典均可變。

也就是說字符串和元組不能通過索引,改變該二者的某一個字符,而字典和列表可以通過賦值改變。

字符串和元組,只能通過切片方法,創造一個新的字符串和元組,近似改變,例如:

zifuchuan='abc123' zifuchuan1='z'+zifuchuan[1:] print(zifuchuan1)zbc123

而這種近似改變的嫁接,并不會影響原字符串或者元組。

由于可變性,這四種增加元素的方法也不同

4.增加元素
字符串和元組只能通過+運算符,創造一個新的字符串和元組,例如:

t = 'a', 'b', 'c', 'd', 'e' x= 'a', 'b', 'c', 'd', 'e' z=t+x print(z)('a', 'b', 'c', 'd', 'e', 'a', 'b', 'c', 'd', 'e')

而列表可以通過列表方法中的append添加,字典則可以利用d['key']='value',為字典添加一個新的鍵值對。

附:

由于字符串、列表、字典、元組均有所不同,因此在實際編程中,常常需要進行序列的嵌套:列表嵌套列表、元組嵌套元組,元組嵌套列表等等,而哪種更合適則需要通過更深入的學習和熟練的運用進行判斷,書中第十二章元組的序列嵌套小節對其進行了簡要的敘述:

顯而易見的是,字符串比其他序列的限制更多,因為它的所有元素都必須是字符,且字符串不可變。如果你希望能夠改變字符串中的字符,使用列表嵌套字符或許更合適。
列表比元組更常用,主要是因為它們是可變的。 但是有些情況下,你可能更傾向于使用元組:
在一些情況下(例如 return 語句),從句式上生成一個元組比列表要簡單。
如果你想使用一個序列作為字典的鍵,那么你必須使用元組或字符串這樣的不可變類型。
如果你向函數傳入一個序列作為參數,那么使用元組可以降低由于別名而產生的意外行為的可能性。

二、圖像工程導論——形態學處理

1.形態學基本操作:膨脹與腐蝕

膨脹與腐蝕往往在二值圖像進行,二者均利用任意形狀的h內核與二值圖像做卷積,其中進行膨脹操作時,將內核劃過圖像,將內核的覆蓋區域的最大像素值提取,并代替錨點位置的像素,而腐蝕相反,提取的時區域內的最小像素值。

通俗的解釋就是:膨脹讓白色更大,腐蝕讓黑色更大

下面是例子,將圖像轉化為灰度圖像后進行二值化,進而執行膨脹的腐蝕操作

import cv2 as cv img =cv.imread('HIT.jpg') imgg=cv.cvtColor(img,cv.COLOR_BGR2GRAY) ret,img_thr = cv.threshold(imgg,200,255,cv.THRESH_BINARY_INV) kernel = cv.getStructuringElement(cv.MORPH_RECT,(3,5)) dst = cv.erode(img_thr,kernel,iterations=1) dst1= cv.dilate(img_thr,kernel,iterations=1) cv.imshow('erzhihua',img_thr) cv.imshow('fushi',dst) cv.imshow('pengzhang',dst1)

二值化圖像

膨脹操作

膨脹ca

腐蝕操作

2.形態學組合操作

開運算:先腐蝕后膨脹,腐蝕可以消除噪聲并且收縮白色的目標,之后的膨脹可以將物體擴大會原來大小,因此可用于降噪,使用方法:

open= cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

閉運算:先膨脹后腐蝕,與開運算相似,能關閉物體的小孔、暗區、小黑點等,使用方法:

close=cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel)

形態學梯度:膨脹結果與腐蝕結果的差,由于擴張的圖像減去了收縮的圖像,因此可以保留物體的邊緣輪廓。

頂帽:原圖像與開運算結果的差,能夠突出比原圖輪廓周圍的區域更明亮的區域

黑帽:閉運算與原圖像結果的差,能夠突出突出比原圖輪廓周圍的區域更暗的區域

上述組合操作均可以利用cv2.morphologyEx函數,通過改變內部參數實現,也可以利用膨脹和腐蝕這兩種基礎操作,根據組合操作的定義進行操作。

三、python調用其他文件的函數

我們在使用python進行函數編寫時,經常需要調用其他文件中已經編寫好的函數,假設我們的主程序為A.py,需要導入的文件和函數分別為B.py和C(),具體的調用方法分成以下幾種情況:

  • A和B在同一目錄
  • import B B.C()

    或者若只需調用一個函數,也可以

    from B import C C()

    2.A和B不在同一目錄

    我將B.py放在了我的主文件夾中,此時調用的方法為

    import sys sys.path.append('/home/yzsz') import B B.C()

    這里調用的sys模塊,能夠提供對解釋器的使用或者維護的變量的訪問,其中sys.path是一個包含指定模塊搜索路徑的列表,因此,將你想要導入的模塊路徑加入其中即可調用。

    注意:

    在試用同目錄調用的時,我自定義了一個模塊abc.py,這里只有一個函數aa,他會打印字符串'hello world',但是卻出現了如下的錯誤:

    AttributeError: module 'abc' has no attribute 'aa'

    也就是說,尋找到了abc模塊,但是未找到aa函數,最終發現問題在于python自帶abc模塊,能通過定義一個抽象基類,可以為一組子類定義一個通用的API,在我import時,自動導入了這一自帶模塊,自然找不到我的自定義函數。

    因此在為文件和模塊取名時,需注意不能python自帶的模塊重名!!

    總結

    以上是生活随笔為你收集整理的二值化图像去除小黑点_python与图像工程(2020.10.11)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。