• 大小: 3KB
    文件类型: .py
    金币: 2
    下载: 1 次
    发布日期: 2021-06-07
  • 语言: Python
  • 标签: python实现  

资源简介

使用python对基于区域生长的图像分割算法进行解决,有什么问题欢迎一同交流。

资源截图

代码片段和文件信息

#coding:utf-8
import cv2  
import numpy as np
from matplotlib import pyplot as plt

# 说明:区域生长算法 
# 输入:原图像、种子点判断准则、生长准则 
# 返回:生长图像 


def Region_Grow(MatIniGrowPointiGrowJudge):
    #iGrowPoint为种子点的判断条件,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]) 
    #初始化原始种子点  
    for i in range(np.shape(MatIn)[0]):  
        for j in range(np.shape(MatIn)[1]):
            it=MatIn[i][j]  
            if it<=iGrowPoint:#选取种子点,自己更改  
                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 判断本次和上次的种子点是否一样,如果一样则终止循环  
        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

评论

共有 条评论