Python实现图片二值化
1. 什么是二值化
图像二值化就是将图像上的像素点的“灰度值”设置为[0, 0, 0]或[255, 255, 255],即要么纯黑,要么纯白。
2. 二值化的作用
通过二值化,能更好地分析物体的形状和轮廓。
3. 二值化的实现
二值化的实现一般有: 全局阈值法、自适应阈值法、OTSU二值化等
(1)全局阈值法
就是选定一个全局阈值,大于这个值的色素点就赋值为255;反之为0。
(2)自适应阈值法
全局阈值法相对比较简单粗暴。自适应阈值法的原理就是将像素点与该点所在区域的像素的平均值做比较,大于则赋予255;反之,为0.
(3)OTSU二值化
不太明白,后续遇到后再进行补充。
4.代码实现
# ---------------------------
# @Time : 2022/5/2 22:37
# @Author : lcq
# @File : two_.py
# @Function : 图像二值化
# ---------------------------import cv2
import matplotlib.pyplot as plt
import matplotlib
import numpy as np
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文
# 为了坐标轴负号正常显示。matplotlib默认不支持中文,设置中文字体后,负号会显示异常。需要手动将坐标轴负号设为False才能正常显示负号。
matplotlib.rcParams['axes.unicode_minus'] = False# 读取灰度图像
img = cv2.imread("C:\\Users\\17631\\Desktop\\test.jpeg", 0)
print("原图的shape: ", img.shape)
plt.subplot(2, 2, 1)
plt.imshow(img, cmap='gray')
plt.title("原图")# 1.全局阈值法
ret, mask_all = cv2.threshold(src=img, # 要二值化的图片thresh=127, # 全局阈值maxval=255, # 大于全局阈值后设定的值type=cv2.THRESH_BINARY) # 设定的二值化类型,THRESH_BINARY:表示小于阈值置0,大于阈值置填充色
print("全局阈值的shape: ", mask_all.shape)
plt.subplot(2, 2, 2)
plt.imshow(mask_all, cmap='gray')
plt.title("全局阈值")# 2.自适应阈值法
mask_local = cv2.adaptiveThreshold(src=img, # 要进行处理的图片maxValue=255, # 大于阈值后设定的值adaptiveMethod=cv2.ADAPTIVE_THRESH_MEAN_C, # 自适应方法,ADAPTIVE_THRESH_MEAN_C:表区域内均值;ADAPTIVE_THRESH_GAUSSIAN_C:表区域内像素点加权求和thresholdType=cv2.THRESH_BINARY, # 同全局阈值法中的参数一样blockSize=11, # 方阵(区域)大小,C=1) # 常数项,每个区域计算出的阈值的基础上在减去这个常数作为这个区域的最终阈值,可以为负数
print("局部阈值的shape: ", mask_local.shape)
plt.subplot(2, 2, 3)
plt.imshow(mask_local, cmap='gray')
plt.title("局部阈值")# 3.OTSU二值化
ret2, mask_OTSU = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
print("OTSU的shape: ", mask_OTSU.shape)
plt.subplot(2, 2, 4)
plt.imshow(mask_OTSU, cmap='gray')
plt.title("OTSU")plt.show()
效果:
打印的维度:
原图的shape: (2338, 1080)
全局阈值的shape: (2338, 1080)
局部阈值的shape: (2338, 1080)
OTSU的shape: (2338, 1080)
注:
本文的代码实现有参考这一篇文章,这篇文章写得非常好,各位可查看:添加链接描述
Python实现图片二值化相关推荐
- python图像灰度化_python实现图片二值化及灰度处理方式
python实现图片二值化及灰度处理方式 我就废话不多说了,直接上代码吧! 集成环境:win10 pycharm #!/usr/bin/env python3.5.2 # -*- coding: ut ...
- python灰度处理打印图片_python实现图片二值化及灰度处理方式
我就废话不多说了,直接上代码吧! 集成环境:win10 pycharm #!/usr/bin/env python3.5.2 # -*- coding: utf-8 -*- '''4图片灰度调整及二值 ...
- python对图像二值化_python如何二值化图像
在python中二值化图像的方法:首先将图片转化为灰色图像:然后自定义灰度界限:最后输入"photo=Img.point(table,'1')"命令(table为自己创建的数组名) ...
- 【pytorch】yolov4 实现对蛾子数据集的识别 以及 对蛾子图片二值化处理 实现 自动打标签标注。(本文重点在自动实现将图片转化为voc数据集)
文章目录 一.之前工作回顾 二.图片处理过程 (1)图片的裁剪 (2)生成xml文件的相关代码 三.使用yolov4模型,训练预测蛾子数据集 四.项目步骤记录 五.数据标注范例 六.关于xml的创建. ...
- python opencv图像二值化函数_python opencv 二值化 计算白色像素点的实例
python opencv 二值化 计算白色像素点的实例 贴部分代码 #! /usr/bin/env python # -*- coding: utf-8 -*- import cv2 import ...
- OpenCV+python:图像二值化
1,图像二值化概念及方法 一个像素点的颜色是由RGB三个值来表现的,所以一个像素点矩阵对应三个颜色向量矩阵,分别是R矩阵,G矩阵,B矩阵,它们也都是同样大小的矩阵. 在图像处理中,用RGB三个分量(R ...
- python对参数二值化处理_OpenCV自适应阀值二值化表格检测方法(python版)
OCR主要分为三个步骤:检测.分割.文字识别.其中文字识别无论是英文还是中文相对比较成熟.只要检测到位,标准的印刷体识别率还是非常高的. 文书OCR检测主要有文字检测和表格检测.文本段落基于行的检测通 ...
- opencv图片二值化寻找轮廓
本文主要是介绍如何根据图片的像素值寻找同一像素值的类,并寻找轮廓圈出图片. 1.二值化 函数原型double threshold( InputArray src,OutputArray dst,dou ...
- 手写数字图片二值化转换为32*32数组。
最近课设外加生病,本来打算在上一篇机器学习使用k-近邻算法改进约会网站的配对效果.就打算写的一直没有时间.按照<机器学习实战>的流程,手写数字识别是kNN中的最后一部分,也是一个比较经典的 ...
最新文章
- linux重命名命令
- 京东AI一把手周伯文被曝离职创业,曾任技术委员会主席,毕业于中科大少年班...
- OPEN(SAP) UI5 扫盲
- mysql有没有单机版?
- R 读取excel的方法
- JAVA入门级教学之(IDEA工具的快捷键和简单设置)
- 3d旋转相册代码源码_用代码制作3d相册签到墙(附源码)
- [ES6系列-01]Class:面向对象的“新仇旧恨”
- pythonmysql数据分析_利用Mysql进行python的数据分析
- 遇到一个不得其解的问题。
- icesat-2 数据产品
- 通过UDP广播实现Android局域网Peer Discovering
- RHEL5虚拟化之一--xen包
- MediaCoder压缩参数设置
- win10如何删除微软拼音输入法
- 安卓数字倒数控件_大家有什么好用的安卓倒计时APP?
- 梦三显示服务器列表,梦三国开服表_梦三国开服时间表_梦三国最新开服_9K9K手游网...
- GDOI2018滚粗记
- HMI-29-【运动模式】转速表实现及中心油耗仪表实现
- 宝可梦合体再次流行?Pokemon Fusion的技术实现
热门文章
- 写一段关于saucony跑鞋endorphin elite的文案
- 8年测试经验,耗时一星期整理的40道自动化测试面试题(附精准答案),爆肝2W字..........
- docker 安装matlab记录
- 什么是瀑布开发?适用于哪些场景?有哪些瀑布开发管理系统?
- 人脸对齐及关键点检测
- IDEA乱码,怎么设置UTF-8都不行
- 闵行区区级创新研发中心给予50万元奖励
- ZZULIOJ:1043: 最大值
- 隐语义模型 VS 协同过滤
- 微信小程序|简单的签到功能(前端部分)