首页 > 编程语言 >python去除图片白边黑边

python去除图片白边黑边

时间:2024-05-20 11:18:53浏览次数:21  
标签:python image 白边 file 去除 diff white type 图片

主要用于去除图片的白边和黑边,比如在截图表情包的时候,通过小米的传送门保存图片的时候,图片往往会有黑边和白边,此时使用此脚本二次处理

import os
from PIL import Image, ImageChops
def trim_white_border(image):
    bg = Image.new(image.mode, image.size, image.getpixel((0, 0)))  # 创建一张和原图相同大小像素量的单色图片,图片颜色取决于原图(0,0)坐标的像素点颜色
    # bg.show()
    diff = ImageChops.difference(image, bg)  # 将原图和底色图对比,反转色
    # diff.show()
    diff = ImageChops.add(diff, diff, 2.0, -100)  # 去除图片中的像素点,在此之后的图片已被去除白色像素
    # diff.show()
    bbox = diff.getbbox()  # 计算图像中非零区域的边界框,获取去除白边后的图形边界
    if bbox:
        return image.crop(bbox)  # 返回图像中的一个矩形区域。方框是一个 4 元组,定义了左、上、右、下像素坐标。
    else:
        print('trim white border for {} fail!'.format(file))
        return False

type_list = ['.jpg', '.png'] #处理同目录下的jpg和png图片
for file in os.listdir('.'):
    for file_type in type_list:
        if file.endswith(file_type):
            print('start trim white border for {}'.format(file))
            image = Image.open(file)
            trimmed_image = trim_white_border(image)
            trimmed_image.save(file.replace(file_type, '_trimmed'+file_type))
            print('trim white border for {} ok!'.format(file))

处理前:

处理后:

标签:python,image,白边,file,去除,diff,white,type,图片
From: https://www.cnblogs.com/nekoame/p/18201486

相关文章

  • Python内置库:pathlib(文件路径操作)
    官方文档:pathlib—Object-orientedfilesystempaths一、基础使用遍历子目录使用通配符遍历文件拼接路径获取标准化后的绝对路径查询路径常规属性打开文件frompathlibimportPathprint('1.1查询指定目录的子目录')p=Path('D:/Envs')print([sub_pforsub_p......
  • 【PYTHON3】环境搭建+编程学习之路的开始——Windows系统
    一、概述在学习python开发语言之前需要安装好开发语言环境(也就是常说的开发环境)开发环境主要有:解释器和编辑器IDE,而其中的解释器是用来将代码转换成机器语言,python语言也就是解释器;编辑器用来写代码逻辑,python语言推荐的是pycharm,它是IDE集成开发环境,这里面有开发时需要的工具......
  • 【开源】2024最新python豆瓣电影数据爬虫+可视化分析项目
    项目介绍【开源】项目基于python+pandas+flask+mysql等技术实现豆瓣电影数据获取及可视化分析展示,觉得有用的朋友可以来个一键三连,感谢!!!项目演示[video(video-C9B87WwE-1716106102936)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=1204518067)(image-https......
  • Python __str__ 和 __repr__
    在Python中,__str__和__repr__是两个非常重要的特殊方法,它们用于定义对象的字符串表示形式,但它们的用途和场景稍有不同:__str__ 方法__str__方法提供了对象的“人性化”字符串表示,它的目的是为了方便人类阅读和理解。当你使用print()函数打印一个对象,或者直接将对象用在字......
  • Python 数据降级(重采样)
    在数据处理中,经常有高频数据转成低频,秒级数据转成分钟、小时数据等。我们将讨论以下方法:使用Pandas的resample方法:示例:将天数据转化成月数据。代码示例:importpandasaspdimportnumpyasnp#创建随机成绩score数据df=pd.DataFrame({'date':pd.date_range......
  • 百度 Apollo 自定义模块发布——使用 Python 语言(bazel 编译 Python 模块)_bazel-bin b
    CSDN搬家失败,手动导出markdown后再导入博客园BinaryvsComponent首先说明下,Apollo的核心概念是组件,通过组件可以实现资源的自动管理和调度。CyberRT中只能使用C++语言实现Component,Python版的API只能用来写传统的二进制可执行文件,参考官方文档中这两种方式的区别:B......
  • 百度 Apollo 使用 bazel 编译 C++ Boost 依赖出现 undefined reference to `boost::pyth
    CSDN搬家失败,手动导出markdown后再导入博客园因为一些原因,楼主想在Apollo自动驾驶框架里使用Boost.python工具来用C++调用Python,从网上找了个例子想编译下试试。C++代码如下(boost.python/EmbeddingPython-PythonWiki):#include<boost/python.hpp>usingnamesp......
  • Python 实现任意多边形的最大内切圆算法_任意多边形最大内切圆算法
    CSDN搬家失败,手动导出markdown后再导入博客园参考Matlab计算轮廓内切圆初衷是为了求裂缝的最大宽度![[output/attachments/5ecf17abcb54aaa4fb35b00c3f243f32_MD5.png]]直接上代码importrandomimportcv2importmathimportnumpyasnpfromnumpy.maimportcos,......
  • Python opencv 将一张图片任意 N 等分并保存_opencv 等分图像
    CSDN搬家失败,手动导出markdown后再导入博客园importcv2src=cv2.imread('100_0124_0013_pre_disaster.JPG',-1)cnt=1num=1sub_images=[]sub_image_num=4src_height,src_width=src.shape[0],src.shape[1]sub_height=src_height//sub_image_numsub_wi......
  • Python Pandas 数据分组
    在数据处理中,分箱、分组是一种常见的技术,用于将连续数据的间隔分组到“箱”或“桶”中。我们将讨论以下两种方法:使用Pandas的between和loc方法:between方法返回一个布尔向量,指示Series元素是否位于给定的边界值之间。loc方法用于根据条件选择数据。示例:将学......