用Python去除图像的黑色或白色背景实例


Posted in Python onDecember 12, 2019

用Python去除背景,得到有效的图像

此目的是为了放入深度学习计算中来减少计算量,同时突出特征,原图像为下图,命名为1.jpg,在此去除白色背景,黑色背景同理

用Python去除图像的黑色或白色背景实例

需要对原图像进行的处理是去掉白色背景,抠出有效的参与计算的图形的大小即下图

用Python去除图像的黑色或白色背景实例

对此有两个思路:

用掩模法得到有效部分,其次去掉空白,但太繁琐喽,并且一万多张图片,其不弄到天荒地老(截图也是哦)

对图像进行处理,即先做numpy变化,后反变换,将255-原图像,此时得到的图像就是

用Python去除图像的黑色或白色背景实例

在此计算图像的横轴相加为0,纵轴相加为0,删去和为0的列和行得到的numpy矩阵,用255减去numpy矩阵得到的图像就是所求有效图像。(在此我没能实现三通道的图像,只能做出灰度图的图像)程序如下:

from PIL import Image
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import scipy.misc
img = Image.open('1.jpg')
e,g=img.size
img1=img.convert('L')
img1=np.array(img1, dtype='float32')
arr=255-img1
arr1 = arr.sum(axis=0)#每一列求和
arr2 = arr.sum(axis=1)#每一行求和
df=pd.DataFrame(arr)#把像素点转化为dataframe
df.insert(len(df.columns),len(df.columns),arr2)#最后一列插入每一行的和
df1=pd.concat([df,(pd.DataFrame(df.sum()).T)])#最后一行插入每一列的和
df2=df1[df1[e]>0]#根据最后一列把大于0的行筛选出来

#根据最后一行,把等于0的列删除掉
for c in df2.columns:
  if df2[c].sum() == 0 :
    df2.drop(columns = [c],inplace = True)
    
df2.drop(columns=[e],inplace = True)#删除最后一列
df3 = df2.head((df2.shape[0])-1)#删除最后一行
a=255-df3
#df3.values#dataframe转化为numpy
plt.imshow(a)
scipy.misc.toimage(df3.values).save('C:/Users/Administrator.SKY-20180518VHY/Desktop/2.jpg')#保存图像

最终得到的图像为

用Python去除图像的黑色或白色背景实例

在此处考虑过将图像变为列表,但在此处做嵌套列表太为复杂,因而放弃,最终利用DataFrame做的,本考虑将三通道分开分别作运算最终得到的R、G、B三通道图像由于大小不匹配无法整合到一起,又失败了。只能得到单通道凑合弄吧。谁有好的思路,求沟通…

完整程序:

import os
from PIL import Image
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import scipy.misc
def save_pic(file_path):

  c = []
  names = os.listdir(file_path) #路径
  #将文件夹中的文件名称与后边的 .dcm分开
  for name in names:
    c.append(name)
  for files in c :
    img = Image.open(file_path+'\\'+files)
    e,g=img.size
    img1=img.convert('L')
    img1=np.array(img1, dtype='float32')
    arr=255-img1
    arr1 = arr.sum(axis=0)#每一列求和
    arr2 = arr.sum(axis=1)#每一行求和
    df=pd.DataFrame(arr)#把像素点转化为dataframe
    df.insert(len(df.columns),len(df.columns),arr2)#最后一列插入每一行的和
    df1=pd.concat([df,(pd.DataFrame(df.sum()).T)])#最后一行插入每一列的和
    df2=df1[df1[e]>0]#根据最后一列把大于0的行筛选出来
    
    #根据最后一行,把等于0的列删除掉
    for c in df2.columns:
      if df2[c].sum() == 0 :
        df2.drop(columns = [c],inplace = True)
        
    df2.drop(columns=[e],inplace = True)#删除最后一列
    df3 = df2.head((df2.shape[0])-1)#删除最后一行
    #df3.values#dataframe转化为numpy
    a=255-df3 
    plt.imshow(a)
    scipy.misc.toimage(a).save('C:/Users/Administrator.SKY-20180518VHY/Desktop'+'/'+files)#保存图像
  print('all is saved')  
  
save_pic(file_path='C:\\Users\\Administrator.SKY-20180518VHY\\Desktop\\1')

去除多个文件夹下多张图像,分别为:

用Python去除图像的黑色或白色背景实例

程序为:

import os
from PIL import Image
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import scipy.misc
def save_pic(file_path):

  c = []
  d=[]
  names = os.listdir(file_path) #路径
  #将文件夹中的文件名称与后边的 .dcm分开
  for name in names:
    c.append(name)
  for files1 in c:
    n=os.listdir(file_path+'\\'+files1)
    for name in n:
      d.append(file_path+'\\'+files1+'\\'+name)

    for files2 in d :
      img = Image.open(files2)
      e,g=img.size
      img1=img.convert('L')
      img1=np.array(img1, dtype='float32')
      arr=255-img1
      arr1 = arr.sum(axis=0)#每一列求和
      arr2 = arr.sum(axis=1)#每一行求和
      df=pd.DataFrame(arr)#把像素点转化为dataframe
      df.insert(len(df.columns),len(df.columns),arr2)#最后一列插入每一行的和
      df1=pd.concat([df,(pd.DataFrame(df.sum()).T)])#最后一行插入每一列的和
      df2=df1[df1[e]>0]#根据最后一列把大于0的行筛选出来
      
      #根据最后一行,把等于0的列删除掉
      for c in df2.columns:
        if df2[c].sum() == 0 :
          df2.drop(columns = [c],inplace = True)
          
      df2.drop(columns=[e],inplace = True)#删除最后一列
      df3 = df2.head((df2.shape[0])-1)#删除最后一行
      df3.values#dataframe转化为numpy
      a=255-df3
      plt.imshow(a)
      scipy.misc.toimage(a).save('C:/Users/Administrator.SKY-20180518VHY/Desktop'+'/'+ '%d.jpg'%(d.index(files2)))#保存图像
  print('all is saved')  
  
save_pic(file_path='C:\\Users\\Administrator.SKY-20180518VHY\\Desktop\\2')

以上这篇用Python去除图像的黑色或白色背景实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
Apr 25 Python
Python使用bs4获取58同城城市分类的方法
Jul 08 Python
Python基于pillow判断图片完整性的方法
Sep 18 Python
python破解zip加密文件的方法
May 31 Python
flask-socketio实现WebSocket的方法
Jul 31 Python
使用python将mysql数据库的数据转换为json数据的方法
Jul 01 Python
将pymysql获取到的数据类型是tuple转化为pandas方式
May 15 Python
python 代码运行时间获取方式详解
Sep 18 Python
Python基于爬虫实现全网搜索并下载音乐
Feb 14 Python
python自动化调用百度api解决验证码
Apr 13 Python
python解决12306登录验证码的实现
Apr 18 Python
在Python中如何使用yield
Jun 07 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
Dec 12 #Python
flask的orm框架SQLAlchemy查询实现解析
Dec 12 #Python
python实现批量处理将图片粘贴到另一张图片上并保存
Dec 12 #Python
Python FtpLib模块应用操作详解
Dec 12 #Python
Python PyInstaller库基本使用方法分析
Dec 12 #Python
Python + Requests + Unittest接口自动化测试实例分析
Dec 12 #Python
python opencv图片编码为h264文件的实例
Dec 12 #Python
You might like
PHP MSSQL 存储过程的方法
2008/12/24 PHP
PHP 程序授权验证开发思路
2009/07/09 PHP
PHP Session机制简介及用法
2014/08/19 PHP
PHP实现中文圆形印章特效
2015/06/19 PHP
jQuery 入门讲解1
2009/04/15 Javascript
通过length属性判断jquery对象是否存在
2013/10/18 Javascript
JQuery移动页面开发之屏幕方向改变与滚屏的实现
2015/12/03 Javascript
原生js编写autoComplete插件
2016/04/13 Javascript
javascript对象的相关操作小结
2016/05/16 Javascript
jQuery+CSS3文字跑马灯特效的简单实现
2016/06/25 Javascript
Js调用Java方法并互相传参的简单实例
2016/08/11 Javascript
Angular2-primeNG文件上传模块FileUpload使用详解
2017/01/14 Javascript
前端开发之CSS原理详解
2017/03/11 Javascript
Three.js基础学习教程
2017/11/16 Javascript
浅谈Vue页面级缓存解决方案feb-alive(上)
2019/04/14 Javascript
详解vue开发中调用微信jssdk的问题
2019/04/16 Javascript
Vue 中如何正确引入第三方模块的方法步骤
2019/05/05 Javascript
nodejs和react实现即时通讯简易聊天室功能
2019/08/21 NodeJs
jQuery实现tab栏切换效果
2020/12/22 jQuery
Python判断变量是否已经定义的方法
2014/08/18 Python
使用Python下载歌词并嵌入歌曲文件中的实现代码
2015/11/13 Python
详解使用pymysql在python中对mysql的增删改查操作(综合)
2017/01/18 Python
matplotlib 输出保存指定尺寸的图片方法
2018/05/24 Python
在Pandas中给多层索引降级的方法
2018/11/16 Python
python 自定义装饰器实例详解
2019/07/20 Python
python base64库给用户名或密码加密的流程
2020/01/02 Python
简单了解django文件下载方式
2020/02/10 Python
使用matlab 判断两个矩阵是否相等的实例
2020/05/11 Python
英国殿堂级有机护肤品牌:Rodial
2017/04/17 全球购物
Vita Fede官网:在意大利手工制作,在纽约市设计
2019/10/25 全球购物
应届毕业生求职自荐书
2014/01/03 职场文书
美术国培研修感言
2014/02/12 职场文书
环保口号大全
2014/06/12 职场文书
通知书大全
2015/04/27 职场文书
学校远程教育工作总结
2015/08/11 职场文书
Python编程中Python与GIL互斥锁关系作用分析
2021/09/15 Python