python连通域标记_pythonamp;#8212;二值图像连通域标记 - 易采站长站
# -*- 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)
總結
以上是生活随笔為你收集整理的python连通域标记_pythonamp;#8212;二值图像连通域标记 - 易采站长站的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是分布式_终于搞懂分布式锁是什么了
- 下一篇: 如何获取握手包_白话详解TCP的三次握手