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 图像二值化-阈值分割相关推荐

  1. 【OpenCV 例程200篇】37. 图像的灰度化处理和二值化处理

    [OpenCV 例程200篇]37. 图像的灰度化处理和二值化处理 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 按 ...

  2. 【OpenCV 4开发详解】图像二值化

    本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...

  3. opencv进阶学习9:图像阈值大全,图像二值化,超大图像二值化

    基础版笔记链接: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 基础版二值化讲解 opencv ...

  4. opencv 二值化 matlab,opencv-python图像二值化函数cv2.threshold函数详解及参数cv2.THRESH...

    cv2.threshold()函数的作用是将一幅灰度图二值化,基本用法如下: #ret:暂时就认为是设定的thresh阈值,mask:二值化的图像 ret,mask = cv2.threshold(i ...

  5. 图像二值化 php im2bw,图像二值化-MATLAB实现

    1.图像二值化代码: A=imread('hw1.chips1.GIF'); %读取到一张图片 %thresh = graythresh(A); %自动确定二值化阈值 I2 = im2bw(A,120 ...

  6. matlab 反向二值化,MATLAB:图像二值化、互补图(反运算)(im2bw,imcomplement函数)...

    图像二值化.反运算过程涉及到im2bw,imcomplement函数,反运算可以这么理解:原本黑的区域变为白的区域,白的区域变为黑的区域. 实现过程如下: close all;%关闭当前所有图形窗口, ...

  7. python将灰度图像二值化_python实现图像二值化

    1.什么是图像二值化 彩色图像: 有blue,green,red三个通道,取值范围均为0-255 灰度图:只有一个通道0-255,所以一共有256种颜色 二值图像:只有两种颜色,黑色和白色,二值化就是 ...

  8. OPENCV C++图像提取,图像处理,roi,阈值分割,连通区域筛选,边缘检测(以箱子边缘框选为例)

    本周有机会接触了一点opnev, 在此做一下记录, 最终以框选出下图箱子为目的(图片箱子为相机实拍结果,曝光有点低,会有亿点点暗 ), 本文会拆解步骤并附上图片, 完整的源码在最后.PS:本文参考了好 ...

  9. opencv画框返回坐标 python_python opencv鼠标事件实现画框圈定目标获取坐标信息

    本文实例为大家分享了python-opencv鼠标事件画框圈定目标的具体代码,供大家参考,具体内容如下 在视频/相机中,用鼠标画矩形框,圈定目标,从而获得鼠标的起始坐标点a.终止坐标点b # -*- ...

最新文章

  1. Python——cmd调用(os.system阻塞处理)(多条命令执行)
  2. Struts2 @ResultPath注释示例
  3. Java-使用JavaMail发送一封邮件给用户邮箱功能实现
  4. ae中心点重置工具_(精品)AE从小白到大神之路(七)-AE动画—动效常见的设计方法...
  5. 11届蓝桥杯青少年组C++全国赛高级组 六.编程实现:求阶乘(python3实现)
  6. 《深入浅出程序设计竞赛(基础篇)》第1部分 语言入门 第3章 分支结构程序设计
  7. oracle 分组 top10 sql,oracle sql 合龙 分组 聚合函数
  8. Linux 搭建NTP服务器
  9. python 模拟用户点击浏览器_浏览器行为模拟之requests、selenium模块
  10. PLSQL的下载、安装、配置远程连接Oracle 详解
  11. EXP-00091 Exporting questionable statistics
  12. 5. ATF(ARM Trusted firmware)启动---bl31
  13. 一IT公司hr对软件外包感受(转)
  14. 全民程序员时代来了吗?解锁低代码流行背后的秘密
  15. 记一次定位解决SpringBoot中内嵌Tomcat的Bug问题
  16. 【微信小程序】判断手机号是否合法
  17. Couldn’t load custom C++ ops.
  18. 人类一败涂地steam创意工坊地图制作教程交流
  19. ps怎么做手绘水彩画效果装饰画
  20. 计算机毕业设计Java课程资源管理平台(源码+mysql数据库+系统+lw文档)

热门文章

  1. UnicodeEncodeError\: gbk codec cant encode character \\xa1 in position 9699的解决办法
  2. 一文读懂 RoIPooling、RoIAlign 和 RoIWarp
  3. 从源码学习Transformer!
  4. Lambda表达式关于like问题(未解决)
  5. vue-cli——vue-resource登录注册实例
  6. Linux Tomcat安装,Linux配置Tomcat,Linux Tomcat修改内存,Linux tomcat修改端口
  7. html+css3实现二级下拉菜单
  8. 还不错的Table样式和form表单样式
  9. arm中断保护和恢复_ARM中断异常处理的返回
  10. java拍照搜题软件下载_修改版|学生福利!!免费拍照搜题秒出答案,扫一扫作业出答案!...