python实现去除图片纯色边框和给图片补边
生活随笔
收集整理的这篇文章主要介绍了
python实现去除图片纯色边框和给图片补边
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
# encoding: utf-8
# author: qbit
# date: 2020-06-15
# summary: 去除图片纯色边框
import shutil
from PIL import Image, ImageChops
Image.MAX_IMAGE_PIXELS = 10000000000
import numpy as np
def TrimImgEdge(inImgPath, outImgPath):r"""去除图片边框inImgPath: 输入图片路径outImgPath: 输出图片路径"""print(f'TrimImgEdge {inImgPath} ...')imgIn = Image.open(inImgPath)# 创建一个边框颜色图片bg = Image.new(imgIn.mode, imgIn.size, imgIn.getpixel((0, 0)))diff = ImageChops.difference(imgIn, bg)# diff = ImageChops.add(diff, diff, 2.0, -10) # 可选,会去的更干净,副作用是误伤bbox = diff.getbbox() # 返回左上角和右下角的坐标 (left, upper, right, lower)if bbox:imgIn.crop(bbox).save(outImgPath, quality=95)else:shutil.copyfile(inImgPath, outImgPath)
if __name__ == "__main__":TrimImgEdge('IR_3000.png', 'IR_3000(new).png')
Python 给图片补边
# encoding: utf-8 # author: qbit # date: 2020-09-2 # summary: 给宽图片上下补白边,让其满足一定比例,然后缩放到指定尺寸import math from PIL import Image Image.MAX_IMAGE_PIXELS = 10000000000 def add_white_edge(inImgPath, outImgPath, width, height):r"""给宽图片上下补白边,让其满足一定比例,然后缩放到指定尺寸inImgPath: 输入图片路径outImgPath: 输出图片路径width: 最终宽度height: 最终高度"""print(f'{inImgPath}')inImg: Image.Image = Image.open(inImgPath)bgWidth = inImg.widthbgHeight = inImg.heightif bgWidth > bgHeight:bgHeight = math.ceil((bgWidth * height) / width)# 创建一个白色背景图片bgImg: Image.Image = Image.new("RGB", (bgWidth, bgHeight), (255, 255, 255))bgImg.paste(inImg, (0, round((bgHeight - inImg.height) / 2)))bgImg.resize((width, height), Image.LANCZOS).save(outImgPath)if __name__ == "__main__":add_white_edge('IR_3000(new).png', 'IR_3000_4.png', 46170, 23085)参考: https://segmentfault.com/a/1190000022940069
参考 : https://segmentfault.com/a/1190000023863720
总结
以上是生活随笔为你收集整理的python实现去除图片纯色边框和给图片补边的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 局域网中的两台主机共享一台显示器
- 下一篇: 用Python进行图文识别(OCR)