pyhton +opencv图像处理(十五)——图像二值化

Python-彩色图像的二值化 彩色图像的二值化 理论&实践 阅读详情

二值图像(Binary Image)
彩色图像:三个通道:0-255,0-255,0-255,有2^24位空间
灰度图像:一个通道:0-255,共有256种颜色
二值图像:只有两种颜色,黑色和白色(0和1)

图像二值化方法:
1、全局阈值
2、局部阈值

from matplotlib import pyplot as plt 
from cv2 import cv2 as cv
import numpy as np 

# 整体阈值
def threshold_demo(image):
    gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)  # 变成灰度图像
    #ret,binary = cv.threshold(gray,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU)# 这个好一点
    #ret,binary = cv.threshold(gray,0,255,cv.THRESH_BINARY|cv.THRESH_TRIANGLE)#三角阈值法
    ret,binary = cv.threshold(gray,127,255,cv.THRESH_BINARY)   # 自己指定阈值 为127
    # 还有其他方法
    '''
    OpenC的threshold函数进行全局阈值。其函数原型为:threshold(src, thresh, maxval, type[, dst]) -> retval, dst
    src参数表示输入图像(多通道,8位或32位浮点)。
    thresh参数表示阈值。
    maxval参数表示与THRESH_BINARY和THRESH_BINARY_INV阈值类型一起使用设置的最大值。
    type参数表示阈值类型。
    retval参数表示返回的阈值。若是全局固定阈值算法,则返回thresh参数值。若是全局自适应阈值算法,则返回自适应计算得出的合适阈值。
    dst参数表示输出与src相同大小和类型以及相同通道数的图像。
    '''    
    print("threshold value %s "%ret)
    cv.imshow("binary",binary)
    

# 局部阈值(自适应阈值)
def local_threshold(image):
    gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)
    dst = cv.adaptiveThreshold(gray,255,cv.ADAPTIVE_THRESH_MEAN_C,cv.THRESH_BINARY,25,10)
    # 还有其他的方法
    cv.imshow("local_threshold",dst)

# 自己计算阈值
def custom_threshold(image):
    gray = cv.cvtColor(image,cv.COLOR_RGB2GRAY)   #要二值化图像,要先进行灰度化处理
    h,w = gray.shape[:2]  #求宽高
    m = np.reshape(gray,[1,w*h])    #将图像转一维数组,一行,w*h列,转换维度要保证其size不变
    mean = m.sum() / (w*h)  #求平均值来当做阈值,来分割图像
    print("mean :",mean)
    ret,binary = cv.threshold(gray,mean,255,cv.THRESH_BINARY)
    cv.imshow("custom_threshold",binary)
    cv.imwrite("C:\\pictures\\123.jpg",binary) # 存图

if __name__ == "__main__":
	filepath = "C:\\pictures\\012345.jpg"
	img = cv.imread(filepath)       # blue green red
	cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
	cv.imshow("input image",img)
	
	# threshold_demo(img)
	# local_threshold(img)
	custom_threshold(img)
	'''
	# 图片相与
	img1 = cv.imread("C:\\pictures\\123.jpg")
	dst = cv.bitwise_and(img,img1)
	cv. imshow("and",dst)
	'''
	cv.waitKey(0)
	cv.destroyAllWindows()

二值化后的图像,其中一个函数例子,效果不太好
在这里插入图片描述
THRESH_OTSU(大律法)和THRESH_TRIANGLE(三角形)都是自动获取阈值

自己直接指定阈值:
①THRESH_BINARY_INV 大于阈值的都为0
②THRESH_TRUNC 截断大于127的值都为127
③THRESH_TOZERO 小于阈值为0
cv.THRESH_TRIANGLE类型(有丢失)适用于单个波峰
cv.THRESH_OTSU类型最适用于双波峰

局部阈值:
cv.ADAPTIVE_THRESH_GAUSSIAN_C轮廓更加清晰


adaptiveThreshold方法:
adpativeThreshold(src,maxValue,adaptiveMerhod,thersholdType,blockSize,C[,dst])
src:表示输入图像(8位单通道图像)

maxValue:表示使用THRESH_BINARY和THRESH_BINARY_INV的最大值

adaptiveMerhod:表示自适应阈值算法,平均(ADAPTIVE_THRESH_MEAN_C)或高斯(ADAPTIVE_THRESH_GAUSSIAN_C)

thersholdType:表示阈值类型,必须为THRESH_BINARY或THRESH_BINARY_INV的类型

blockSize:表示块大小(奇数且大于1)

C:常数,表示平均值或加权平均值中减去的数,通常情况下是正值,但也有可能为零或负值


reshape方法:
numpy的reshape函数是给数组一个新的形状而不改变其数据

reshape(a,newshape,oeder=‘C’)
a:表示需要重新形成的原始数组

newshape:表示int或int类型数组(taple),若为(1,3)表示生成的新数组是1行3列

order:表示使用此索引顺序读取a的元素,并使用此索引顺序将元素放置到新形成的数组中

Unity URP 深度解析:利用Stencil与RenderFeature实现高效遮挡高亮 本文深入解析Unity URP中利用Stencil与RenderFeature实现高效遮挡高亮的技术方案。通过模板缓冲机制和自定义RenderFeature,开发者可以在保持场景完整性的同时,清晰标识被遮挡物体位置,提升游戏体验。文章详细介绍了Shader编写、URP管线配置及性能优化技巧,并提供了常见问题排查方法。 阅读详情

相关推荐

Vue3实战:企业级应用集成钉钉扫码登录全流程解析

本文详细解析了在Vue3企业级应用中集成钉钉扫码登录的全流程。从钉钉开放平台应用创建与配置,到Vue3前端如何优雅地嵌入并管理扫码组件,再到后端如何安全地处理OAuth 2.0授权码以换取用户信息并完成登录,提供了完整的实战代码与避坑指南。该方案能有效实现安全便捷的单点登录,统一企业身份认证。

weixin_29019241的博客 292

OpenCV学习心得——python版——图像二值化(图像阈值)——全局阈值与自适应阈值

OpenCV学习心得——python版——图像二值化(图像阈值)——全局阈值与自适应阈值 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: 本笔记仅供参考 操作系统版本:Windows10 编译器:JetBrains PyCharm 2019.1.3 x64 所需库: opencv-python2.xx.xx以上(我用的最新的,但是不一定要用...

whl970831的博客 7357

VMware Workstation Pro 16 安装 Ubuntu 20.04

VMware Workstation Pro 16 安装 ubuntu 20.04目录环境VMware Workstation下载Ubuntu 20.04下载安装过程 目录 环境 Windows 10 Workstation 16 Pro for Windows Ubuntu 20.04 LTS 64位 desktop版本 VMware Workstation下载 链接: https://www.vmware.com/products/workstation-pro/workstation-pro-eval

qq_45642410的博客 1万+

python-opencv 图像阈值二值化

本文讲解基于OpenCV-python的图像二值化API及浅显原理讲解 文章目录阈值一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 阈值 在python的OpenCV中,阈值是图像二值化的必要条件,所谓阈值就是设定一个指,对于整张图片来说,大于该值的像素点重赋值为一个值,或者小于该值的像素点重赋值为多少。 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本

qq_45804132的博客 2624

SpringSecurity(15)——OAuth2密码模式

SpringSecurity Oauth2密码模式

peng_gx的博客 1521

运放偏置电路设计:如何精准计算差分放大器的电压偏移量

本文深入解析了差分放大器偏置电路的设计原理与精准计算方法,重点阐述了如何通过引入参考电压实现信号电压偏移,以适应单电源ADC的输入范围。文章结合实战案例,详细推导了偏移电压公式,并强调了电阻匹配、运放选型及PCB布局对精度和共模抑制比的关键影响,帮助硬件工程师避免常见设计陷阱。

weixin_29288313的博客 636

pycharm读取图片图像灰度二值化 解决图片窗口太大问题

import cv2 import numpy as np # 二值形态学运算 def morphology(img): kernel1 = cv2.getStructuringElement(cv2.MORPH_RECT, (20, 14)) # 腐蚀矩阵 iFushi = cv2.morphologyEx(img, cv2.MORPH_DILATE, kernel1) # 对文字腐蚀运算 cv2.imshow('fushi', iFushi) kernel2 .

weixin_46302766的博客 2313

深入解析i2cdetect:从基础命令到高级读写操作

本文深入解析Linux下i2cdetect工具,从基础安装、总线扫描到高级读写操作。作为i2c-tools的核心组件,i2cdetect是硬件调试的得力侦探,能快速识别I2C总线上的设备地址。文章还涵盖了i2cdump、i2cset、i2cget等进阶工具,并介绍了如何在C程序中调用读写接口进行嵌入式开发,是掌握I2C通信调试的实用指南。

weixin_29189987的博客 372

用python将图像二值化

用python将图像二值化:代码中需要更改的参数有三个: 1.original_folder:原始文件夹路径 2.new_folder:保存新文件夹路径 3.以127做为阈值进行二值化图像

qq_44042678的博客 719

VxWorks系列 快速导航

Vxworks系列快速阅览导航

Mr.Sugarcane 1312

12、有杆泵抽油系统:原理、性能与选择

本文全面介绍了有杆泵抽油系统的原理、性能分析和设备选择方法。有杆泵抽油系统广泛应用于石油开采领域,通过地面抽油装置与井下柱塞泵的配合,实现高效、稳定的原油提升。文章详细解析了系统的工作原理、组成结构、光杆运动特性、载荷计算、泵输送能力及功率需求,并提供了抽油装置的选择流程和实际案例分析。此外,还探讨了泵的容积效率影响因素、示功图的作用及系统优化运行的建议,为石油开采工程提供了理论支持和实践指导。

gan8painter的博客 435

OpenCV学习——图像二值化处理及二维傅里叶变换

图像二值化算法分为全局固定阈值和局部动态阈值即自适应阈值。cv2.threshold(src, thresh, maxval, type)和adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C, dst=None)傅里叶变换实际上是将信号f(t)与一组不同频率的复正弦做内积。cv2.dft(src, dst=None, flags=None, nonzeroRows=None)......

weixin_51995147的博客 5234

OpenCV计算机视觉实战(11)——边缘检测详解

在本节中,我们系统介绍了三大经典边缘检测算子,包括 Sobel 算子:一阶导数平衡了噪声抑制与边缘提取,结合方向信息可用于纹理分析与车道检测;Laplacian 算子:二阶导数对微小亮度突变尤为敏感,配合零交叉和细化技术,可精确捕捉任意方向的细节边缘;Canny 算法:集成多阶段处理与双阈值策略,通过多尺度融合与自适应阈值优化,达到抗噪与细节兼顾的卓越效果。

qq_30167691的博客 4377

Python+OpenCV(一)——基础操作

Python+OpenCV学习笔记(一) 学习视频:python+opencv3.3视频教学 基础入门 读取图像 # 例1:测试OpenCV是否可用 import cv2 as cv # 引入OpenCV模块 src = cv.imread("C:/Users/Administrator/Pictures/PS/11.png") # 读取图像 # 通过GUI创建窗口,窗口大小根据照片大小自动调整 cv.namedWindow("input image",cv.WINDOW_AUTOSIZE

Cat_South_North的博客 1087

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

OpenCV 二值化

一、简述 图像二值化(Image Binarization)就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程。在数字图像处理中,二值图像占有非常重要的地位,图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。 二、原理 将256个亮度等级的灰度图像通过适当的阈值选取而获得仍然可以反映图像整体和局部特征的二值化图像。首先,图像的二值化有利于图像的进一步处理,使图像变得简单,而且数据量减小,能凸显出感兴趣的目标的轮廓。其次,要进行二值图像的处理与分析,首先要

qq_27278957的博客 8513

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Python opencv图像处理基础总结(四) 模板匹配 图像二值化

python与opencv图像处理基础总结,模板匹配的匹配的原理和几种常用算法,python调用opencv相关API的方法,图像二值化的处理,python调用opencv中的全局阈值函数和局部阈值函数,对图像图像阈值分割,实现图像二值化处理。 ...

叶庭云 成为自己的光 5290

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

9. OpenCV--图像二值化(Binary Image)

》》点赞,收藏+关注,理财&技术不迷路《《 目录: 9.1 二值化概念与原理 二值化 —— 图像只有两种色,黑白。0-1,0=黑,1=白 灰度:0-255 彩色:255,255,255 定义:图像的二值化,就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效果。 一幅图像包括目标物体、背景还有噪声,要想从多值的数字图像中直接提取出目标物体,常用的方法就是设定一个阈值T,用T将图像的数据分成两部分:大于T的像素群和小于...

大厂offer宝典 4560

Open CV系列学习笔记(十二)图像二值化 2021-02-06

Open CV系列学习笔记(十二)图像二值化 图像二值化 图像二值化( Image Binarization)就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程。 在数字图像处理中,二值图像占有非常重要的地位,图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。 将256个亮度等级的灰度图像通过适当的阈值选取而获得仍然可以反映图像整体和局部特征的二值化图像。在数字图像处理中,二值图像占有非常重要的地位,首先,图像的二值化有利于图像的进一步处理,使图像变得简单,而

pidzhengding的博客 730

opencv二值化详解

二值化 学习了二值化,我通过看了很多资料,希望通过总结和大家一起学习,一起努力,有错误,希望大家指正 在处理图片操作时,二值化在图片领域占有很大作用 在数字图像处理中,二值图像占有非常重要的地位,图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓 opencv中,提供了多种二值化方法 以8位图为例(即值为0-255) 方法one: cv2.THRESH_BINARY 像素灰度...

qq_36665643的博客 2万+

Open CV系列学习笔记(十三)超大图像二值化 2021-02-09

Open CV系列学习笔记(十三)超大图像二值化 1.可以采用分块方法;2.先缩放处理就行二值化,然后还原大小。 一:分块处理超大图像的二值化问题 局部阈值二值化 def big_image_binary0(image): print(image.shape) cw = 256 ch = 256 h, w = image.shape[:2] gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) for row in rang

pidzhengding的博客 261

十五 open CV 教程 形态学二值化和腐蚀操作

指一系列处理图像形状特征的图像处理技术。形态学的基本思想是利用一种特殊的结构元(本质上就是卷积核)来测量或提取输入图像中相应的形状或特征,以便进一步进行图像分析和目标识别。”方法基本是对二进制图像进行处理,即黑白图像卷积核决定着图像处理后的效果形态学常用基本操作有:1、膨胀和腐蚀2、 开运算3、闭运算4、顶帽5、 黑帽。

qq_29448131的博客 1844

OPEN-CV学习笔记(1)

opencv入门学习笔记

qq_44196259的博客 1843

图像的灰度化、二值化

图像像素点 在图像处理中,用RGB三个分量(R:Red,G:Green,B:Blue),即红、绿、蓝三原色来表示真彩色,R分量,G分量,B分量的取值范围均为0~255,比如电脑屏幕上的一个红色的像素点的三个分量的值分别为:255,0,0。 ...

写代码的小男孩 7755

open cv学习 (五) 图像的阈值处理

【代码】open cv学习 (五) 图像的阈值处理。

Johnor的博客 1287

OpenCV(基础补充)图像二值化

目录 图像二值化(黑白化)步骤: 1、彩图化灰度图 2、灰度图化黑白图(二值化) 图像二值化(黑白化)步骤: 彩色图像——>灰度图像——>二值图像 1、彩图化灰度图 //灰度图 void ToGray() { // 转为灰度图 cvtColor(img, grayImage, COLOR_BGR2GRAY); imshow("灰度图像", grayImage); } 2、灰度图化黑白图(二值化) //黑白图(二值化) void ToBin() { //.

great_yzl的博客 2576

手动实现图像二值化(python)

二值化是将图像使用黑和白两种颜色表示的方法。 我们将灰度的阈值设置为128128128来进行二值化,即: y={0(ify<128)255(else) y=\begin{cases}0& (\text{if}\quad y < 128) \\255& (\text{else})\end{cases} y={0255​(ify<128)(else)​ 代码实现: # -*- coding: utf-8 -*- """ Created on Sat Jul 11 14:53:2

陨星落云的博客 1958
上一篇: python + opencv图像处理(十四)模板匹配
下一篇: python + opencv图像处理(十六)——超大图像二值化
xiao黄
xiao黄 优质创作者: 人工智能技术领域 优质创作者: 人工智能技术领域 领域专家: 数据科学与机器学习技术领域 领域专家: 数据科学与机器学习技术领域
博客等级 码龄8年 1万+粉丝 250原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiao黄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值