-
大小: 3KB文件類型: .py金幣: 2下載: 1 次發(fā)布日期: 2021-06-07
- 語言: Python
- 標(biāo)簽: python實現(xiàn)??
資源簡介
使用python對基于區(qū)域生長的圖像分割算法進(jìn)行解決,有什么問題歡迎一同交流。
代碼片段和文件信息
#coding:utf-8
import?cv2??
import?numpy?as?np
from?matplotlib?import?pyplot?as?plt
#?說明:區(qū)域生長算法?
#?輸入:原圖像、種子點(diǎn)判斷準(zhǔn)則、生長準(zhǔn)則?
#?返回:生長圖像?
def?Region_Grow(MatIniGrowPointiGrowJudge):
????#iGrowPoint為種子點(diǎn)的判斷條件,iGrowJudge為生長條件??
????MatGrowOld=Get_Array(np.shape(MatIn)[0]np.shape(MatIn)[1])??
????MatGrowCur=Get_Array(np.shape(MatIn)[0]np.shape(MatIn)[1])??
????MatGrowTemp=Get_Array(np.shape(MatIn)[0]np.shape(MatIn)[1])?
????#初始化原始種子點(diǎn)??
????for?i?in?range(np.shape(MatIn)[0]):??
????????for?j?in?range(np.shape(MatIn)[1]):
????????????it=MatIn[i][j]??
????????????if?it<=iGrowPoint:#選取種子點(diǎn),自己更改??
????????????????MatGrowCur[i][j]=255??
?????
??????
????DIR=[[-1-1][-10][-11][0-1][01][1-1][10][11]]?
????MatTemp=MatGrowOld-MatGrowCur
????iJudge=cv2.countNonZero(MatTemp)??
????if?not?iJudge==0:?#MatGrowOld!=MatGrowCur?判斷本次和上次的種子點(diǎn)是否一樣,如果一樣則終止循環(huán)??
????????MatGrowTemp=MatGrowCur??
????????for?i?in?range(np.shape(MatIn)[0]):??
????????????for?j?in?range(np.shape(MatIn)[1]):??
????????????????if?MatGrowCur[i][j]==255?and?not(MatGrowOld[i][j]==255):??
????????????????????for?iNum?in?range(8):?
????????????????????????iCurPosX=i+DIR[iNum][0]??
????????????????????????iCurPosY=j+DIR[iNum][1]??
????????????????????????if?iCurPosX>0?and?iCurPosX<(np.shape(MatIn)[0
評論
共有 條評論