opencv 二值化 python_Python OpenCV 图像二值化-阈值分割
1.二值化处理
# 手动二值化处理
# 设置阈值大小 threshold
thresh = 125
# 设置超过阈值像素值的最大值
maxval = 255
# THRESH_BINARY:超过阈值为maxval,否则为0
# THRESH_BINARY_INV:超过阈值为0,否则为maxval(相当于上个参数取反)
# THRESH_TRUNC:超过阈值为thresh,低于阈值灰度值不变
# THRESH_TOZERO:超过阈值灰度值不变,否则为0
# THRESH_TOZERO_INV:超过阈值为0,低于阈值灰度值不变
ret, thresh1 = cv2.threshold(img, thresh, maxval, cv2.THRESH_BINARY)
ret, thresh2 = cv2.threshold(img, thresh, maxval, cv2.THRESH_BINARY_INV)
ret, thresh3 = cv2.threshold(img, thresh, maxval, cv2.THRESH_TRUNC)
ret, thresh4 = cv2.threshold(img, thresh, maxval, cv2.THRESH_TOZERO)
ret, thresh5 = cv2.threshold(img, thresh, maxval, cv2.THRESH_TOZERO_INV)
titles = ['original image', 'Binary', 'binary-inv', 'trunc', 'tozero', 'tozero-inv']
images = [img, thresh1, thresh2, thresh3, thresh4, thresh5]
for i in range(6):
plt.subplot(2, 3, i+1)
plt.imshow(images[i], 'gray')
plt.title(titles[i])
plt.xticks([])
plt.yticks([])
plt.show()
2.自动二值化处理
img2 = cv2.imread('002.tif', 0)
# rows, cols = img2.shape
# Otsu阈值
ret1, thresh1 = cv2.threshold(img, 0, 255, cv2.THRESH_OTSU)
# Otsu可与其他二值化方式一起使用
ret2, thresh2 = cv2.threshold(blur, 0, 255, cv2.THRESH_OTSU + cv2.THRESH_BINARY)
# # Triangle阈值-很少用到
# ret3, thresh3 = cv2.threshold(img2, 0, 255, cv2.THRESH_TRIANGLE)
# ret4, thresh4 = cv2.threshold(blur, 0, 255, cv2.THRESH_TRIANGLE)
titles = ['original image', "Otsu's", "Otsu's+Binary"] # "Triangle", "Triangle-Otsu's"
images = [img, thresh1, thresh2] # thresh3, thresh4
for i in range(3):
plt.subplot(1, 3, i+1)
plt.imshow(images[i], 'gray')
plt.title(titles[i])
plt.xticks([])
plt.yticks([])
plt.show()
3.自适应二值化
# maxval为像素值的最大值默认设为255
# blockSize为计算像素阈值的像素邻域的大小:3、5、7。。。。、99
# C为从平均值或加权平均值中减去常数,一般设置为0-50
blockSize = 25
C = 5
# 高斯BINARY
thresh1 = cv2.adaptiveThreshold(img2, maxval, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, blockSize, C)
# 高斯BINARY_INV
thresh2 = cv2.adaptiveThreshold(img2, maxval, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, blockSize, C)
# 平均BINARY
thresh3 = cv2.adaptiveThreshold(img2, maxval, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, blockSize, C)
# 平均BINARY_INV
thresh4 = cv2.adaptiveThreshold(img2, maxval, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY_INV, blockSize, C)
titles = ['original image', "gaussian binary", "gaussian binary_inv", "mean binary", "mean binary_inv"]
images = [img2, thresh1, thresh2, thresh3, thresh4]
for i in range(5):
plt.subplot(2, 3, i+1)
plt.imshow(images[i], 'gray')
plt.title(titles[i])
plt.xticks([])
plt.yticks([])
plt.show()
opencv 二值化 python_Python OpenCV 图像二值化-阈值分割相关推荐
- 【OpenCV 例程200篇】37. 图像的灰度化处理和二值化处理
[OpenCV 例程200篇]37. 图像的灰度化处理和二值化处理 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 按 ...
- 【OpenCV 4开发详解】图像二值化
本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...
- opencv进阶学习9:图像阈值大全,图像二值化,超大图像二值化
基础版笔记链接: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 基础版二值化讲解 opencv ...
- opencv 二值化 matlab,opencv-python图像二值化函数cv2.threshold函数详解及参数cv2.THRESH...
cv2.threshold()函数的作用是将一幅灰度图二值化,基本用法如下: #ret:暂时就认为是设定的thresh阈值,mask:二值化的图像 ret,mask = cv2.threshold(i ...
- 图像二值化 php im2bw,图像二值化-MATLAB实现
1.图像二值化代码: A=imread('hw1.chips1.GIF'); %读取到一张图片 %thresh = graythresh(A); %自动确定二值化阈值 I2 = im2bw(A,120 ...
- matlab 反向二值化,MATLAB:图像二值化、互补图(反运算)(im2bw,imcomplement函数)...
图像二值化.反运算过程涉及到im2bw,imcomplement函数,反运算可以这么理解:原本黑的区域变为白的区域,白的区域变为黑的区域. 实现过程如下: close all;%关闭当前所有图形窗口, ...
- python将灰度图像二值化_python实现图像二值化
1.什么是图像二值化 彩色图像: 有blue,green,red三个通道,取值范围均为0-255 灰度图:只有一个通道0-255,所以一共有256种颜色 二值图像:只有两种颜色,黑色和白色,二值化就是 ...
- OPENCV C++图像提取,图像处理,roi,阈值分割,连通区域筛选,边缘检测(以箱子边缘框选为例)
本周有机会接触了一点opnev, 在此做一下记录, 最终以框选出下图箱子为目的(图片箱子为相机实拍结果,曝光有点低,会有亿点点暗 ), 本文会拆解步骤并附上图片, 完整的源码在最后.PS:本文参考了好 ...
- opencv画框返回坐标 python_python opencv鼠标事件实现画框圈定目标获取坐标信息
本文实例为大家分享了python-opencv鼠标事件画框圈定目标的具体代码,供大家参考,具体内容如下 在视频/相机中,用鼠标画矩形框,圈定目标,从而获得鼠标的起始坐标点a.终止坐标点b # -*- ...
最新文章
- Python——cmd调用(os.system阻塞处理)(多条命令执行)
- Struts2 @ResultPath注释示例
- Java-使用JavaMail发送一封邮件给用户邮箱功能实现
- ae中心点重置工具_(精品)AE从小白到大神之路(七)-AE动画—动效常见的设计方法...
- 11届蓝桥杯青少年组C++全国赛高级组 六.编程实现:求阶乘(python3实现)
- 《深入浅出程序设计竞赛(基础篇)》第1部分 语言入门 第3章 分支结构程序设计
- oracle 分组 top10 sql,oracle sql 合龙 分组 聚合函数
- Linux 搭建NTP服务器
- python 模拟用户点击浏览器_浏览器行为模拟之requests、selenium模块
- PLSQL的下载、安装、配置远程连接Oracle 详解
- EXP-00091 Exporting questionable statistics
- 5. ATF(ARM Trusted firmware)启动---bl31
- 一IT公司hr对软件外包感受(转)
- 全民程序员时代来了吗?解锁低代码流行背后的秘密
- 记一次定位解决SpringBoot中内嵌Tomcat的Bug问题
- 【微信小程序】判断手机号是否合法
- Couldn’t load custom C++ ops.
- 人类一败涂地steam创意工坊地图制作教程交流
- ps怎么做手绘水彩画效果装饰画
- 计算机毕业设计Java课程资源管理平台(源码+mysql数据库+系统+lw文档)
热门文章
- UnicodeEncodeError\: gbk codec cant encode character \\xa1 in position 9699的解决办法
- 一文读懂 RoIPooling、RoIAlign 和 RoIWarp
- 从源码学习Transformer!
- Lambda表达式关于like问题(未解决)
- vue-cli——vue-resource登录注册实例
- Linux Tomcat安装,Linux配置Tomcat,Linux Tomcat修改内存,Linux tomcat修改端口
- html+css3实现二级下拉菜单
- 还不错的Table样式和form表单样式
- arm中断保护和恢复_ARM中断异常处理的返回
- java拍照搜题软件下载_修改版|学生福利!!免费拍照搜题秒出答案,扫一扫作业出答案!...