对于急需要用的朋友可以直接用下面的代码

  • opencv2实现

    import cv2def alpha2white_opencv2(img):sp=img.shapewidth=sp[0]height=sp[1]for yh in range(height):for xw in range(width):color_d=img[xw,yh]if(color_d[3]==0):img[xw,yh]=[255,255,255,255]return imgif __name__=='__main__':img=cv2.imread('haveAlpha.png',-1)img_copy=img.copy()#注意:这里先copy()再传入函数,直接传入img会将原img直接修改掉whiteback=alpha2white_opencv2(img_copy)cv2.imshow("after",whiteback)cv2.waitKey(0)
    #haveAlpha.png改成你自己的透明背景图片路径
    
  • PIL实现
    from PIL import Imagedef alphabg2white_PIL(img):img=img.convert('RGBA')sp=img.sizewidth=sp[0]height=sp[1]print(sp)for yh in range(height):for xw in range(width):dot=(xw,yh)color_d=img.getpixel(dot)if(color_d[3]==0):color_d=(255,255,255,255)img.putpixel(dot,color_d)img.show()return imgif __name__=='__main__':img=Image.open('haveAlpha.png')whiteback=alphabg2white_PIL(img)whiteback.show()
    #同样的haveAlpha.png改成自己需要处理的透明背景图片

下面来讲述一下我是如何处理这些细节的吧

首先,图片有三通道图片RGB和四通道图片RGBA,RGB我们都知道是代表红绿蓝三原色,而RGBA则在此基础上加入了透明度Alpha,Alpha的值会对RGB衍生的颜色造成影响。对于PIL的Image以及opencv2而言,它们都是可以正常的读取这中通道的图片的,这也是我一开始不知道的地方。img=cv2.imread('haveAlpha.png')直接读入图片是三通道的,只有img=cv2.imread('haveAlpha.png',-1)第二个参数为负数,才会将其透明度传入;img=Image.open('haveAlpha.png')直接就是传入四通道的了。但是问题是这两者的show方法显示图片却不能将其自动显示成白背景,而且,即使是读出之后再重新保存,其保存的图片颜色也会变得不正常,我想不出原因是什么,但是我们可以做的是自己把透明的背景变成白色。

对读出来的RGBA图片矩阵写入文件中
opencv2:

import cv2
import numpy as npimg=cv2.imread('haveAlpha.png',-1)
img=np.reshape(img,(-1,4))
#利用numpy降维,以正常写进txt观察
np.savetxt('opencv2.txt',img)

PIL:

from PIL import Image
import numpy as npI=Image.open('anotherAlpha.png')
I=I.convert('RGBA')
I_array=np.array(I)
I_array=np.reshape(I_array,(-1,4))
np.savetxt("PIL.txt",I_array)

用log viewer等阅读器打开txt(用记事本会有点慢,因为字数太多),如果你的图片大部分都是纯透明的,那么大部分行的数字会一样

----还没写完,后续继续补充----

python(opencv2、PIL)将图片透明背景转换成白色背景的两种方法相关推荐

  1. 图片文字怎么转换成文本?两个方法教会你

    图片文字怎么转换成文本?相信小伙伴们不论平时在工作中还是日常学习中看到一些长篇大论的资料内容都会先将其拍照下来留存,这样比较方便记录,但当整理这些资料内容的时候,通常会需要讲文字都转移到文档中可以自由 ...

  2. python获取剪切板图片_python 获取剪切板内容的两种方法

    第一种 # -*- coding: utf-8 -*- # @Time : 2020/3/16 21:26 # @File : get_text_from_cupboard_13.py # @Auth ...

  3. 集合转换成数组的两种方法---toArray()和toArray(T[] a)

    实际开发中经常会用到将集合转换成数组进行操作,list有两种方法可以进行数组的转换. 首先看下List的这两个方法的说明:  Object[ ] toArray() :返回按适当顺序包含列表中的所有元 ...

  4. 将word文件转换成PDF的两种方法

    由于工作需要,使用了两种方式实现了word文件转PDF的功能.以下的程序是我使用VB6编写,供大家参考. 第一种方法,使用PDFMAKERAPILib,使用这种方法,可以设置文件的安全性.这种方式是A ...

  5. 记录一个PIL把透明背景转成白色背景的方法

    起先在百度上搜到的文章,的确可以做到透明背景转成白色背景,但是缺陷非常严重,会导致图的背景产生很多像素点,而且效率也不是很高. 又经过了一番搜索之后,发现了一个更好的办法. from PIL impo ...

  6. python把矩阵存为文件_python 读取文件并把矩阵转成numpy的两种方法

    在当前目录下: 方法1: file = open('filename') a =file.read() b =a.split('\n')#使用换行 len(b) #统计有多少行 for i in ra ...

  7. badatatable转成json_C# DataTable 转换成JSON数据 三种方法

    在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List.DataTable转换为Json格式.特别在使用Extjs框架的时候,Ajax异步请求的数 ...

  8. python numpy读取数据_大神教你python 读取文件并把矩阵转成numpy的两种方法

    导读 今天小编就为大家分享一篇python 读取文件并把矩阵转成numpy的两种方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 在当前目录下: 方法1: file = open( ...

  9. python大神读取_大神教你python 读取文件并把矩阵转成numpy的两种方法

    导读 今天小编就为大家分享一篇python 读取文件并把矩阵转成numpy的两种方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 在当前目录下: 方法1: file = open( ...

最新文章

  1. 《程序员书屋》微刊创建,赠书活动进行中!
  2. Android开发者指南(4) —— Application Fundamentals
  3. 水晶报表错误:bobj is not defined
  4. springboot几种注入_Spring Boot中使用JdbcTemplate访问数据库
  5. 常用数据库连接和diriver以及默认端口
  6. 第五章循环结构(一)
  7. 最全三大框架整合(使用映射)——IDeptDao.java
  8. LoRa、Sigfox和NB-IoT在物联网趋势中谁是你的最佳拍档?
  9. 【IE6的疯狂之四】IE6文字溢出BUG
  10. C语言进阶——全局变量
  11. elasticsearch中的优先级线程池
  12. 云服务器一直显示启动中,云服务器一直启动代码
  13. java excel 电话号码_数值或者电话号码被EXCEL转成了科学计数法,用XSSFCell 如何读取...
  14. 20201221:力扣220场周赛题解
  15. Linux修改时区(tzselect) 【例子:修改时区 为 中国 东8区 的时间】
  16. RobotStudio创建目标点时出现未找到有效配置的问题
  17. 链路负载需求及基本原理
  18. vue实现codemirror代码编辑器中的SQL代码格式化功能
  19. C++程序设计谭浩强 全部习题答案
  20. android 投屏 ipad,安卓手机投屏到ipad上

热门文章

  1. Eth-Trunk链路聚合原理、静态和动态配置
  2. 物业管理软件 - 总部管控 集中管理 分权运
  3. 一张图读懂一个产业短视频第5期
  4. 关于ODM/OEM协议的要求
  5. 李子柒与袁隆平同台获奖,程序员表示:我们太像了!
  6. nlp-demo01_jieba的基本应用py
  7. php设置图片透明度,wps中设置图片透明度在哪里?
  8. 联想笔记本电脑无线网卡突然消失问题
  9. githua 账号合并_03 注册github并命令行更新、合并以及提交代码
  10. 案例-抓取网页图片实现高效存图