转载请注明作者和出处:https://blog.csdn.net/qq_28810395
Python版本: Python3.x
运行平台: Windows 10
IDE: Pycharm profession 2019 Matlab2010a
一、前言
由于在一些软件和处理上都仅要求是黑白图片,那么掌握一种图片二值化的方法是必要的,常用的是PS进行图片转换,但是作为一名码农,电脑未安装PS(仅代表个人),所以利用手头的软件进行图片黑白转换。下面将介绍两种方法。
二、Python对图片二值化处理
首先准备一个图片
然后进入python编译器进行下述操作,这里举例为Pycharm
- 创建工程并创建py文本。
- 添加三方库,File–>Setting。
- 编写下述代码
# 图片二值化 # 加入PIL库 from PIL import Image # 添加改变的图片地址 img = Image.open('C:/Users/Administrator/Desktop/1.png') # 模式L”转为灰色图像,它的每个像素用8个bit表示,0表示黑,255表示白,其他数字表示不同的灰度。 image = img.convert('L') # 保存灰度图 image.save("11.png") # 自定义灰度界限,大于这个值为黑色,小于这个值为白色 threshold = 50 table = [] for i in range(256):if i < threshold:table.append(0)else:table.append(1) print(table) # 将灰度图像转换为bitlevel图像( 模式"1") 时,所有非零值都设置为 255 ( 白色),存储二值化图片, photo = image.point(table, '1') print(photo) photo.save("22.png")
- 结果如图所示,图一灰度图 ,图二二值化图
如果想黑白转换下可以修改上述代码中这部分
图片就会变这样子for i in range(256):if i < threshold:table.append(1)else:table.append(0)
三、Matlab对图片进行二值化处理
这个相对于Python解决更简单,但是缺少了Python的阈值调节,对一些想自己定义阈值的二值化不友好。下面讲解一下流程
- 在Matlab编译器中输入下述代码
A=imread('C:\Users\Administrator\Desktop\1.png');thresh=graythresh(A);%确定二值化阈值B=im2bw(A,thresh);%对图像二值化imshow(B);%显示二值化图片`
- 将下述图片保存即可
四、抠图
对于有抠图需求的这里提供个传送门,可以直接进入网页抠图。抠图传送门
五、参考信息
https://blog.csdn.net/t8116189520/article/details/80271804
https://jingyan.baidu.com/article/9989c746376a39f648ecfebf.html