Python去掉图片四周纯色边框
时间:2022-07-22
本文章向大家介绍Python去掉图片四周纯色边框,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
有没有遇到过这样的情况,一张好好的图片四周却有一圈黑色或者白色的边框。如果插入到ppt中,还需要手动去裁剪,相当麻烦。今天我们就用python来自动裁剪掉四周不需要的纯色边框。
我们就以下面这两张图为例子,一张有纯黑色边框,一张有纯白色边框。
先来去掉黑色边框。我们知道黑色的RGB值是[0,0,0],因此大体思路就是先获取整张图片的像素,比如black.jpg的信息可以用右键查看属性如下:
也就是说这张图有378行,571列像素。然后逐行和逐列去判断,所有像素点RGB值之和。理论上只需要大于0就可以认为是内容部分了。但是这里为了防止有些比较接近于黑色的纯色边框,我们把阈值设为50。这个值可以自己根据需要调节。
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就可以了
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的阈值来实现。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android实现WebView点击拦截跳转原生
- Android实现带节点的进度条
- Android WebView userAgent 设置为桌面UA实例
- Android WebView 内处理302重定向不跳转的解决
- android studio集成极光推送的操作步骤
- Android中的webview监听每次URL变化实例
- 解决Android WebView拦截url,视频播放加载失败的问题
- Android 极光推送别名与标签方式
- Android Webview的postUrl与loadUrl加载页面实例
- android Web跳转到app指定页面并传递参数实例
- Dialog全屏,去掉状态栏的方式
- Android 通过TCP协议上传指定目录文件的方法
- Android webview加载https链接错误或无响应的解决
- Android Manifest中meta-data扩展元素数据的配置与获取方式
- Android 配置gradle实现VersionCode自增实例