一天一个小技巧(4)——利用Python和MATLAB进行图片二值化

article/2025/8/27 19:33:55

转载请注明作者和出处:https://blog.csdn.net/qq_28810395
Python版本: Python3.x
运行平台: Windows 10
IDE: Pycharm profession 2019 Matlab2010a
在这里插入图片描述

一、前言

  由于在一些软件和处理上都仅要求是黑白图片,那么掌握一种图片二值化的方法是必要的,常用的是PS进行图片转换,但是作为一名码农,电脑未安装PS(仅代表个人),所以利用手头的软件进行图片黑白转换。下面将介绍两种方法。

二、Python对图片二值化处理

  首先准备一个图片

然后进入python编译器进行下述操作,这里举例为Pycharm

  1. 创建工程并创建py文本。
    在这里插入图片描述在这里插入图片描述
  2. 添加三方库,File–>Setting。在这里插入图片描述
    在这里插入图片描述
  3. 编写下述代码
    # 图片二值化
    # 加入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")
    
  4. 结果如图所示,图一灰度图 ,图二二值化图

    如果想黑白转换下可以修改上述代码中这部分
    for i in range(256):if i < threshold:table.append(1)else:table.append(0)
    
    图片就会变这样子

三、Matlab对图片进行二值化处理

  这个相对于Python解决更简单,但是缺少了Python的阈值调节,对一些想自己定义阈值的二值化不友好。下面讲解一下流程

  1. 在Matlab编译器中输入下述代码
    A=imread('C:\Users\Administrator\Desktop\1.png');thresh=graythresh(A);%确定二值化阈值B=im2bw(A,thresh);%对图像二值化imshow(B);%显示二值化图片`
    
  2. 将下述图片保存即可
    在这里插入图片描述

四、抠图

  对于有抠图需求的这里提供个传送门,可以直接进入网页抠图。抠图传送门
在这里插入图片描述

五、参考信息

https://blog.csdn.net/t8116189520/article/details/80271804
https://jingyan.baidu.com/article/9989c746376a39f648ecfebf.html

在这里插入图片描述


http://chatgpt.dhexx.cn/article/Hdh4xueL.shtml

相关文章

matlab nlfilter 填充方式,MatLab实验步骤(超杰版)

图像变换--灰度调整、滤波增强---二值化(阈值分割)--形态学处理--特征提取 一&#xff1a;色彩变换&#xff0c;从颜色上控制思考怎样应用灰度的变换、滤波变换减少地物 直方图均衡化histeq自适应均衡化adapthisteq灰度调节(灰度映射)imadjust【直接变换、非线性变换、灰度映射…

基于Matlab车牌自动识别

灰度变换 灰度图是指将黑色和白色以对数的关系分为256阶的图像。灰度化处理就是将彩色图片通过处理转化为灰度图的过程。彩色图像一般由三个独立色组成&#xff0c;R、G、B三个分量分别显示出红、绿、蓝。灰度化处理就是使R、G、B三个分量相等。灰度值为255的点就是白色&#x…

【MATLAB Image Processing Toolbox 入门教程七】“导入、导出和转换”之“图像类型转换Ⅱ——使用阈值法转换为二值图像”

【MATLAB Image Processing Toolbox 入门教程七】 1 imbinarize函数1.1 imbinarize函数使用语法及说明1.2 imbinarize函数参数说明1.3 imbinarize函数使用示例1.3.1 使用全局阈值和局部自适应阈值对图像二值化1.3.2 检测前景比背景暗的图像 2 graythresh函数3 otsuthresh函数4 …

matlab graythresh3,Matlab—影像分析进阶

在这篇文章里面我们要做的事情全部都围绕两个问题,一个图像当中有多少个 xxx,他们的大小是多少,举个例子 上图是一个米的影像,这张图片里有很多的米,现在我们的问题是,这里面有多少米,他们的大小是多少? graythresh() & im2bw() 要回答上述两个问题,首先要做的是对…

matlab graythresh()函数使用的注意点

用matlab进行图像处理时&#xff0c;经常会遇到设置一个阈值将灰度图处理为二值图的情况。 一般都会这样子 Iimread(1.jpg); levelgraythresh(I); BWim2bw(I,level); 这里就有一个小坑了 比如1.jpg这个读入的图片&#xff0c;每一个像素位置的灰度都是整型。但是你强行转成了…

2.23学习心得 Matlab graythresh函数 形态学开闭操作,腐蚀膨胀的作用

关于graythresh 函数 函数功能&#xff1a;使用 最大类间方差法找到图片的一个合适的阈值&#xff08;threshold&#xff09;。在使用 im2bw函数将灰度图像转换为二值图像时&#xff0c;需要设定一个阈值&#xff0c;这个函数可以帮助我们获得一个合适的阈值。利用这个阈值通常…

graythresh

使用Otsu方法计算全局图像阈值 语法&#xff1a; T graythresh(I) [T,EM] graythresh(I)说明&#xff1a; T graythresh(I) 使用 Otsu 方法 &#xff0c; 根据灰度图像 I 计算全局阈值 T。Otsu 方法选择一个阈值&#xff0c;使阈值化的 黑白像素的类内方差最小化。全局阈值…

软件测试题目

单项选择题&#xff1a;共20小题&#xff0c;每小题1 分&#xff0c;满分20分&#xff1b;请将答案填入题后括号中。 1. 在软件生命周期的哪一个阶段&#xff0c;软件缺陷修复费用最低 &#xff08; A &#xff09; &#xff08;A&#xff…

软件测试题1

单选题 1、系统测试使用&#xff08;C&#xff09;技术, 主要测试被测应用的高级互操作性需求, 而无需考虑被测试应用的内部结构。 A、 单元测试 B、 集成测试 C、 黑盒测试 D、白盒测试 2、单元测试主要的测试技术不包括&#xff08;B &#xff09; A、白…

软件测试题

以题会题 一、单选题 1、对软件进行测试的根本目的是什么&#xff1f;&#xff08; C &#xff09; A、提高软件的质量 B、确保程序符合用户的需求 C、找出程序中的缺陷 D、确保程序没有缺陷 2、在软件生命周期哪个阶段&#xff0c;软件缺陷修复费用最低&#xff1f;&#xf…

软件测试期末考试题

一、单项选择题&#xff08;每小题2分&#xff0c;共21530分&#xff09; 1、软件测试的目的&#xff08; C&#xff09; A&#xff0e;避免软件开发中出现的错误 B&#xff0e;发现软件开发中出现的错误 C&#xff0e;尽可能早地发现并排除软件中潜藏的错误&#xff0c;提高软…

100道软件测试练习题,看看你能有多少分

软件测试与质量保证-软件测试部分练习题 1单选(2分) 软件测试用例主要由输入数据和_________两部分组成。 A.预期输出结果2.00/2.00 B.测试计划 C.以往测试记录分析 D.测试规则 2单选(2分) 与设计测试用例无关的文档是_________。 A.项目开发计划2.00/2.00 B.源程序 …

杨辉三角python小代码

刚刚上机课&#xff0c;老师居然让我们打印杨辉三角&#xff1f;&#xff1f; 结果 def yangHuiSanJiao(n):#打印第一行和第二行print("1".center(50))next_line [1,1]second_line .join([str(i) for i in next_line])print(second_line.center(50))for i in rang…

【5分钟力扣】118.杨辉三角 python

文章目录 一、题目二、解题思路三、三种解题示例 一、题目 给定一个非负整数 numRows&#xff0c;生成杨辉三角的前 numRows 行。 在杨辉三角中&#xff0c;每个数是它左上方和右上方的数的和。 示例: 输入: 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1] ]二、解题思…

蓝桥杯-杨辉三角形-python

题目 可以结合目录来理解文章~ 原始方法 这个方法可以拿到40分。N数值比较大的时候&#xff0c;运行时间会超过限制。 思路 逐行生成杨辉三角&#xff0c;找到了需要的N以后就停止循环&#xff0c;并输出对应的位置。 变量解释 用于计算N的位置的公式如下&#xff1a; po…

第十二届蓝桥杯 杨辉三角形 Python题解 满分

原地址https://artrajz.cn/index.php/archives/32/ 前言 其实道题在寒假的时候就做了&#xff0c;现在有机会发出来了。(〃‘▽’〃) 题目 思路 参考了大佬斜行查找的思路&#xff0c;为了便于观察和叙述&#xff0c;我把杨辉三角形如图排一下 1 1 1 1 2 1 1 3 3 …

python杨辉三角居中_利用python打印杨辉三角

用python打印杨辉三角 介绍 杨辉三角&#xff0c;是初高中时候的一个数列&#xff0c;其核心思想就是说生成一个数列&#xff0c;该数列中的每一个元素&#xff0c;都是之前一个数列中&#xff0c;同样位置的元素和前一个元素的和。 正好在python中&#xff0c;也就是生成一…

杨辉三角形(Python)

杨辉三角形的规则就是每行的第一个数字和最后一个数字为1之外&#xff0c;其余每个数字等于上一行对应两个数字的和。 1、使用二维数组实现 def triangle(row):result []for i in range(row):if i 0: # 第一行result.append([1])elif i 1: # 第二行result.append([1,1])e…

杨辉三角Python解法

给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 例&#xff1a; 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 解析&#xff1a; 大于等于2行以后&#x…

pythonfor杨辉三角,python实现杨辉三角 python实现杨辉三角的几种方法代码实例

想了解python实现杨辉三角的几种方法代码实例的相关内容吗&#xff0c;看&#xff0c;月亮在跳舞在本文为您仔细讲解python实现杨辉三角的相关知识和一些Code实例&#xff0c;欢迎阅读和指正&#xff0c;我们先划重点&#xff1a;python实现杨辉三角,python杨辉三角实现方法&am…