上面是源图片,设置亮度变化系数K以后,直接运行即可,本程序采用扩散算法。
from PIL import Image
L_x = []
L_y = []
k=170 #像素亮度变化率
#imgmap=[0]*2000 #2-前景,1分界,0背景,
imgmap=[[2] * 2000 for i in range(0, 2000)]
imgmap[0][0]=0
mapcontx=1000
mapconty=1000
#print(imgmap)
def bgTrans2white(img):
global mapcontx,mapconty,imgmap
sp = img.size
width = sp[0]
height = sp[1]
print(sp)
for i in range(1279):
for j in range(1705):
dot1 = (i,j)
color_d1 = img.getpixel(dot1) # 与cv2不同的是,这里需要用getpixel方法来获取维度数据
dot2 = (i,j+1)
color_d2 = img.getpixel(dot2) # 与cv2不同的是,这里需要用getpixel方法来获取维度数据
dot3 = (i+1,j)
color_d3 = img.getpixel(dot3) # 与cv2不同的是,这里需要用getpixel方法来获取维度数据
dot4 = (i+1,j+1)
color_d4 = img.getpixel(dot4) # 与cv2不同的是,这里需要用getpixel方法来获取维度数据
# print(abs(color_d2[2]-color_d1[2]))
if(abs(color_d2[2]-color_d1[2])<k and imgmap[i][j+1]==2 and imgmap[i][j]==0):
imgmap[i][j+1]=0
img.putpixel(dot2,(255,255,255)) # 赋值的方法是通过putpixel
if(abs(color_d3[2]-color_d1[2])<k and imgmap[i+1][j]==2 and imgmap[i][j]==0):
imgmap[i+1][j]=0
img.putpixel(dot3,(255,255,255)) # 赋值的方法是通过putpixel
if(abs(color_d4[2]-color_d1[2])<k and imgmap[i+1][j+1]==2 and imgmap[i][j]==0):
imgmap[i+1][j+1]=0
img.putpixel(dot4,(255,255,255)) # 赋值的方法是通过putpixel
#print(imgmap[i][j],imgmap[i][j+1],imgmap[i+1][j],abs(color_d2[2]-color_d1[2]))
for m in range(1279):
i=1279-m
for n in range(1705):
j=1705-n
dot1 = (i,j)
color_d1 = img.getpixel(dot1) # 与cv2不同的是,这里需要用getpixel方法来获取维度数据
dot2 = (i,j-1)
color_d2 = img.getpixel(dot2) # 与cv2不同的是,这里需要用getpixel方法来获取维度数据
dot3 = (i-1,j)
color_d3 = img.getpixel(dot3) # 与cv2不同的是,这里需要用getpixel方法来获取维度数据
dot4 = (i-1,j-1)
color_d4 = img.getpixel(dot4) # 与cv2不同的是,这里需要用getpixel方法来获取维度数据
# print(abs(color_d2[2]-color_d1[2]))
if(abs(color_d2[2]-color_d1[2])<k and imgmap[i][j-1]==2 and imgmap[i][j]==0):
imgmap[i][j-1]=0
img.putpixel(dot2,(255,255,255)) # 赋值的方法是通过putpixel
if(abs(color_d3[2]-color_d1[2])<k and imgmap[i-1][j]==2 and imgmap[i][j]==0):
imgmap[i-1][j]=0
img.putpixel(dot3,(255,255,255)) # 赋值的方法是通过putpixel
if(abs(color_d4[2]-color_d1[2])<k and imgmap[i-1][j-1]==2 and imgmap[i][j]==0):
imgmap[i-1][j-1]=0
img.putpixel(dot4,(255,255,255)) # 赋值的方法是通过putpixel
#print(imgmap[i][j],imgmap[i][j+1],imgmap[i+1][j],abs(color_d2[2]-color_d1[2]))
return img
img = Image.open('C:/Users/Administrator/Desktop/test.jpg')
img = bgTrans2white(img)
#img.show() # 显示图片
img.save('C:/Users/Administrator/Desktop/test2.jpg') # 保存图片
# print(imgmap)
print("处理完成!")