python图片背景设置为白色,并剪裁
#业务场景
由于业务系统需要维护用户的审批签章,即电子签名,用户以照片方式提供,但是照片的尺寸和背景都未经过处理,还不能维护进入业务系统。
图片显示比较暗
#目标
能将签字照片背景处理成白色,并且进行剪裁到合适大小
#实现代码
如下
from PIL import Image
L_x = []
L_y = []
def bgTrans2white(img):
sp = img.size
width = sp[0]
height = sp[1]
# print(sp)
for yh in range(height):
for xw in range(width):
dot = (xw,yh)
color_d = img.getpixel(dot) # 与cv2不同的是,这里需要用getpixel方法来获取维度数据
if(color_d[2] > 100):
color_d = (255,255,255)
img.putpixel(dot,color_d) # 赋值的方法是通过putpixel
else:
# 剪裁处理
L_x.append(xw)
L_y.append(yh)
img = img.crop((min(L_x)-5,min(L_y)-5,max(L_x)+5,max(L_y)+5))
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("处理完成!")
#最终效果
如图
#总结
1.主要是对图片的每个像素点进行遍历,根据设置的阈值进行判断是否需要修改RGB的值。
2.剪裁图片需要确定剪裁区域左上角和右下角的坐标,每张图片在坐标系中都是左上角为(0,0)点,右方和下方为正方向,坐标也是如此选取。
3.这种思路对于处理背景暗的签字照片可行,如果背景存在其他手写线条则无法剪裁出合适大小的图片
参考文章:
https://www.cnblogs.com/jaysonteng/p/12793178.html
https://blog.csdn.net/m0_59485658/article/details/123808484