前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python去掉图片四周纯色边框

Python去掉图片四周纯色边框

作者头像
生信交流平台
发布于 2020-08-06 03:11:18
发布于 2020-08-06 03:11:18
3.2K00
代码可运行
举报
运行总次数:0
代码可运行

有没有遇到过这样的情况,一张好好的图片四周却有一圈黑色或者白色的边框。如果插入到ppt中,还需要手动去裁剪,相当麻烦。今天我们就用python来自动裁剪掉四周不需要的纯色边框。

我们就以下面这两张图为例子,一张有纯黑色边框,一张有纯白色边框。

先来去掉黑色边框。我们知道黑色的RGB值是[0,0,0],因此大体思路就是先获取整张图片的像素,比如black.jpg的信息可以用右键查看属性如下:

也就是说这张图有378行,571列像素。然后逐行和逐列去判断,所有像素点RGB值之和。理论上只需要大于0就可以认为是内容部分了。但是这里为了防止有些比较接近于黑色的纯色边框,我们把阈值设为50。这个值可以自己根据需要调节。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from skimage import io

def corp_margin(img):
        img2=img.sum(axis=2)
        (row,col)=img2.shape
        row_top=0
        raw_down=0
        col_top=0
        col_down=0
        for r in range(0,row):
                if img2.sum(axis=1)[r]>50*col:
                        row_top=r
                        break
 
        for r in range(row-1,0,-1):
                if img2.sum(axis=1)[r]>50*col:
                        raw_down=r
                        break
 
        for c in range(0,col):
                if img2.sum(axis=0)[c]>50*row:
                        col_top=c
                        break
 
        for c in range(col-1,0,-1):
                if img2.sum(axis=0)[c]>50*row:
                        col_down=c
                        break
 
        new_img=img[row_top:raw_down+1,col_top:col_down+1,0:3]
        return new_img
im = io.imread('black.jpg')
img_re = corp_margin(im)
io.imsave('black_rm.png',img_re)
io.imshow(img_re)

那么相应的去除白色边框也很容易了,白色的RGB值是[255,255,255],因此只需要像素点RGB之和小于255*3=765就可以了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from skimage import io

def corp_margin(img):
        img2=img.sum(axis=2)
        (row,col)=img2.shape
        row_top=0
        raw_down=0
        col_top=0
        col_down=0
        for r in range(0,row):
                if img2.sum(axis=1)[r]<765*col:
                        row_top=r
                        break
 
        for r in range(row-1,0,-1):
                if img2.sum(axis=1)[r]<765*col:
                        raw_down=r
                        break
 
        for c in range(0,col):
                if img2.sum(axis=0)[c]<765*row:
                        col_top=c
                        break
 
        for c in range(col-1,0,-1):
                if img2.sum(axis=0)[c]<765*row:
                        col_down=c
                        break
 
        new_img=img[row_top:raw_down+1,col_top:col_down+1,0:3]
        return new_img
im = io.imread('white.jpg')
img_re = corp_margin(im)
io.imsave('white_rm.png',img_re)
io.imshow(img_re)

最后我们都能得到这样一张图

其他颜色的纯色边框,可以自己去尝试调节RGB的阈值来实现。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信交流平台 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
通过k-means进行图像量化压缩--python实现
图像读取完我们获取到的其实是一个width*height的三维矩阵(width,height是图片的分辨率)
Awesome_Tang
2018/09/11
1.5K0
通过k-means进行图像量化压缩--python实现
一文概述用 python 的 scikit-image 模块进行图像分割
AI 科技评论按:随着人工智能技术的逐年火热,越来越多的人投入到计算机视觉领域的相关研究中。而图像分割是图像处理中非常重要的一个步骤,它是把图像分成若干个特定的、具有独特性质的区域,并提取出感兴趣目标的技术。
AI科技评论
2019/03/07
2K0
一文概述用 python 的 scikit-image 模块进行图像分割
Python3+OpenCV3图像处理(三)—— Numpy数组操作图片
print("width: %s  height: %s  channels: %s"%(width, height, channels))
用户7886150
2021/01/05
6050
图像处理: 超像素(superpixels)分割 SLIC算法
超像素概念是2003年Xiaofeng Ren提出和发展起来的图像分割技术,是指具有相似纹理、颜色、亮度等特征的相邻像素构成的有一定视觉意义的不规则像素块。它利用像素之间特征的相似性将像素分组,用少量的超像素代替大量的像素来表达图片特征,很大程度上降低了图像后处理的复杂度,所以通常作为分割算法的预处理步骤。
JNingWei
2018/09/28
16.3K0
图像处理: 超像素(superpixels)分割 SLIC算法
Python 教你用OpenCV实现给照片换底色
OpenCV的全称是:Open Source Computer Vision Library。OpenCV是一个基于 BSD 许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。相比于 PIL 库来说 OpenCV 更加强大, 可以做更多更复杂的应用,比如人脸识别等。
叶庭云
2022/05/06
2.1K0
Python 教你用OpenCV实现给照片换底色
图像凹凸形变
算法:图像凹凸形变是 PS 滤镜中的一种几何变换– Fish lens,像通过凸镜或凹镜观察图像。
裴来凡
2022/05/29
2780
图像凹凸形变
图像抽象画风
import numpy as np import matplotlib.pyplot as plt from skimage import io from skimage.segmentation import slic import numpy.matlib import random file_name='C:/Users/xpp/Desktop/Lena.png'; img=io.imread(file_name) row,col,channel=img.shape #颜色映射 color_m
裴来凡
2022/05/29
3020
图像抽象画风
[Python开发工具]·Python各类图像库的图片读写方式总结
最近在研究深度学习视觉相关的东西,经常需要写python代码搭建深度学习模型。比如写CNN模型相关代码时,我们需要借助python图像库来读取图像并进行一系列的图像处理工作。我最常用的图像库当然是opencv,很强大很好用,但是opencv也有一些坑,不注意的话也会搞出大麻烦。近期我也在看一些别人写的代码,因为个人习惯不一样,他们在做深度学习时用于图片读取的图像库各不相同,从opencv到PIL再到skimage等等各种库都有,有些库读进来的图片存储方式也不太一样,如果不好好总结这些主流图像读写库特点的话,以后看代码写代码都会遇坑无数。这篇文章就总结了以下主流Python图像库的一些基本使用方法和需要注意的地方:
小宋是呢
2019/06/27
1.4K0
[Python开发工具]·Python各类图像库的图片读写方式总结
python︱批量操作文件(os)、图片操作技巧(下载网络图片、skimage.io)
该文章介绍了如何计算两个矩形框的重叠面积以及交并比,并提供了具体的Python代码示例。同时,文章还介绍了如何利用PIL库中的ImageDraw模块来绘制矩形框和文字。此外,文章还介绍了如何将计算得到的交并比结果可视化,并给出了一个示例代码。
悟乙己
2018/01/02
8.2K0
python︱批量操作文件(os)、图片操作技巧(下载网络图片、skimage.io)
Python图像处理基本操作[通俗易懂]
欢迎关注白马负金羁的博客 http://blog.csdn.net/baimafujinji,为保证公式、图表得以正确显示,强烈建议你从该地址上查看原版博文。本博客主要关注方向包括:数字图像处理、算法设计与分析、数据结构、机器学习、数据挖掘、统计分析方法、自然语言处理。
全栈程序员站长
2022/11/04
7330
python智能图片识别系统(图片切割、图片识别、区别标识)
你好! python flask图片识别系统使用到的技术有:图片背景切割、图片格式转换(pdf转png)、图片模板匹配、图片区别标识。
用户6334815
2020/08/13
16K1
python智能图片识别系统(图片切割、图片识别、区别标识)
顶刊分享----组织驻留记忆CD8 T细胞多样性具有时空印记(HD + cellpose + Xenium)
追风少年i
2025/01/27
1110
顶刊分享----组织驻留记忆CD8 T细胞多样性具有时空印记(HD + cellpose + Xenium)
数据读取与数据扩增方法
https://tianchi.aliyun.com/competition/entrance/531795/introduction
Datawhale
2020/06/16
1.4K0
数据读取与数据扩增方法
python也可以边玩边学,试试做个字符画看看
好久没写文章了,今天朋友写了个简单的脚本发给我,觉得很好,经朋友同意,发来让大家看看,学习就是这样,并不是一味的学,要想办法找到它本身的乐趣,才能让我们在学习的道路上走的顺利一些。
云飞
2018/12/28
7030
去除图片边框&制作gif动图
imageio库简化了GIF动态图的制作过程,可以直接读取所有PNG文件,并输出为一个GIF动态图。这是实现代码:
自学气象人
2023/06/21
3460
去除图片边框&制作gif动图
【机器学习基础】k近邻算法
  本文就将介绍一个最基本的分类和回归算法:k近邻(k-nearest neighbor, KNN)算法。KNN是最简单也是最重要的机器学习算法之一,它的思想可以用一句话来概括:“相似的数据往往拥有相同的类别”,这也对应于中国的一句谚语:“物以类聚,人以群分”。具体来说,我们在生活中常常可以观察到,同一种类的数据之间特征更为相似,而不同种类的数据之间特征差别更大。例如,在常见的花中,十字花科的植物大多数有4片花瓣,而夹竹桃科的植物花瓣大多数是5的倍数。虽然存在例外,但如果我们按花瓣数量对植物做分类,那么花瓣数量相同或成倍数关系的植物,相对更可能属于同一种类。
Francek Chen
2025/01/22
1460
【机器学习基础】k近邻算法
基于 opencv 的图像处理入门教程
虽然计算机视觉领域目前基本是以深度学习算法为主,但实际上很多时候对图片的很多处理方法,并不需要采用深度学习的网络模型,采用目前成熟的图像处理库即可实现,比如 OpenCV 和 PIL ,对图片进行简单的调整大小、裁剪、旋转,或者是对图片的模糊操作。
kbsc13
2020/07/16
2.4K0
基于 opencv 的图像处理入门教程
OpenCV-Python实战(1) —— 给图片添加图片水印【利用 OpenCV 像素的读写原理实现】
1. 需求分析 使用 OpenCV 图像像素读写操作原理,也就是 image[row][col] 获取和设值; 给图片添加水印:对应添加水印的位置,设置为水印图片的像素; 水印下能看到原图,也就是说水印必须是透明图片; 同时将水印透明位置像素(0,0,0)改变为同位置的图片的像素。 2. 直接将水印添加到图片 2.1 代码逻辑分析 读取水印logo图片; 读取需要添加水印的图片; 获取水印的宽高; 注意:此处水印使用的三通道读取,因此获取水印属性时需要加通道值。 利用图像像素读取设值原理,直接修改对应像素
Rattenking
2022/10/24
1.8K0
OpenCV-Python实战(1) —— 给图片添加图片水印【利用 OpenCV 像素的读写原理实现】
python代码学习-数据处理图片加遮挡、噪声、模糊
- 高斯噪声(Gaussian noise)是指它的概率密度函数服从高斯分布的一类噪声。如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。
AI深度学习求索
2018/12/11
9.2K0
推荐阅读
相关推荐
通过k-means进行图像量化压缩--python实现
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验