# -*- coding: utf-8 -*-
from PIL import Image
import numpy as np
#定位一个种子,返回种子位置
def seed_dirt(img):
for j in range(height):
for i in range(width):
a = img.getpixel((i,j))
if a == 0:
return((i,j))
#标记连通区域-4连通
def LableConnectedRagion4(labelmap,labelindex,quene):
#flag = len(quene)
while len(quene) !=0 :
(m,n) = quene[0] quene.remove(quene[0])
if img.getpixel((m,n+1)) == 0 and labelmap[n+1][m] == 0:
quene.append((m,n+1))
labelindex += 1
labelmap[n+1][m] = 1
if img.getpixel((m,n-1)) == 0 and labelmap[n-1][m] == 0:
quene.append((m,n-1))
labelindex += 1
labelmap[n-1][m] = 1
if img.getpixel((m+1,n)) == 0 and labelmap[n][m+1] == 0:
quene.append((m+1,n))
labelindex += 1
labelmap[n][m+1] = 1
if img.getpixel((m-1,n)) == 0 and labelmap[n][m-1] == 0:
quene.append((m-1,n))
labelindex += 1
labelmap[n][m-1] = 1
#标记连通区域-8连通
def LableConnectedRagion8(labelmap,labelindex,quene):
#flag = len(quene)
while len(quene) !=0 :
(m,n) = quene[0] quene.remove(quene[0])
# print(m,n)
# print(quene)
for i in range(-1,2):
for j in range(-1,2):
if img.getpixel((m+i,n+j)) == 0 and labelmap[n+j][m+i] == 0:
quene.append((m+i,n+j))
labelindex += 1
labelmap[n+j][m+i] = 1
#匹配标记矩阵输出第一个连通域图片
def save_image(labelmap):
for i in range(len(labelmap)):
for j in range(len(labelmap[0])):
if labelmap[i][j] != 0:
newImg.putpixel((j,i),0)