python opencv 简单阈值算法的实现


Posted in Python onAugust 04, 2019

本文先了解一个简单阈值函数,以了解一个阈值算法的具体参数。

然后比较不同阈值函数的区别。

同样的,先用一副图说明本文重要大纲:

python opencv 简单阈值算法的实现

#! usr/bin/env python
# coding: utf-8
import cv2

img = cv2.imread('cat.jpg')
img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
# 先将图像矩阵进行二值化
# img = cv2.imread('cat.jpg',0)
# 也可以直接将图像用灰度值读入,其中0就表示用灰度读图

cv2.imshow('img',img)

_,img1 = cv2.threshold(img,100,250,cv2.THRESH_BINARY)
# 这个函数返回两个值,第二个值才是二值化后的图像矩阵
# 最后一个参数表示一种二值化算法
# 阈值设置为100,
# 250表示大于100的像素值会被重新赋值为250

cv2.imshow('img',img1)

# cv2.waitKey()
cv2.destroyAllWindows()


############ 以下比较不同简单二值化算法的区别

# 先进行不同算法的二值化
ret,img1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)
# 从名字可以看出一点来,binary是二元的意思,这里指要么0,要么指定的一个值(255)
print(ret)
ret,img2 = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV)
# 注意到INV表示逆,全写是inverse
ret,img3 = cv2.threshold(img,127,255,cv2.THRESH_TRUNC)
# 注意到truncate表示截断的意思。这个函数不再是二元,而是对超过某个值的部分进行处理,否则并不会处理。
ret,img4 = cv2.threshold(img,127,255,cv2.THRESH_TOZERO)
# 实际上,这也是一种阶段,对大于某一个值的像素值进行调整,与trunc不同的是,这里变为0,而不是最大值
ret,img5 = cv2.threshold(img,127,255,cv2.THRESH_TOZERO_INV)

import numpy as np
import matplotlib.pyplot as plt
#用这个模块来画图显示,这个库和opencv有些不同,可参考前面的博客
# https://blog.csdn.net/qq_27261889/article/details/80543966

# 先定义以下图的图题和图像矩阵
titles = ['original','binary','binary_inv','trunc','tozero','tozero_inv']
imgs = [img,img1,img2,img3,img4,img5]

for i in range(6):
  plt.subplot(2,3,i+1)#分别画出每一个图
  plt.imshow(imgs[i],'gray')
  plt.title(titles[i])#写出图题

plt.show()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
教你安装python Django(图文)
Nov 04 Python
Python列表推导式的使用方法
Nov 21 Python
Python中实现结构相似的函数调用方法
Mar 10 Python
python从入门到精通(DAY 3)
Dec 20 Python
Python全局变量用法实例分析
Jul 19 Python
利用python程序帮大家清理windows垃圾
Jan 15 Python
Python多进程原理与用法分析
Aug 21 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
Mar 01 Python
Python3实现的判断环形链表算法示例
Mar 07 Python
浅析Windows 嵌入python解释器的过程
Jul 26 Python
python中的反斜杠问题深入讲解
Aug 12 Python
如何用python实现一个HTTP连接池
Jan 14 Python
Python pandas用法最全整理
Aug 04 #Python
python匿名函数用法实例分析
Aug 03 #Python
pycharm编写spark程序,导入pyspark包的3中实现方法
Aug 02 #Python
Python适配器模式代码实现解析
Aug 02 #Python
Python3网络爬虫开发实战之极验滑动验证码的识别
Aug 02 #Python
pandas中DataFrame修改index、columns名的方法示例
Aug 02 #Python
pandas DataFrame的修改方法(值、列、索引)
Aug 02 #Python
You might like
Laravel 4.2 中队列服务(queue)使用感受
2014/10/30 PHP
php实现微信公众号无限群发
2015/10/11 PHP
php中文乱码问题的终极解决方案汇总
2017/08/01 PHP
jquery关于图形报表的运用实现代码
2011/01/06 Javascript
对frameset、frame、iframe的js操作示例代码
2013/08/16 Javascript
JavaScript两种跨域技术全面介绍
2014/04/16 Javascript
基于jquery实现等比缩放图片
2014/12/03 Javascript
JavaScript前端图片加载管理器imagepool使用详解
2014/12/29 Javascript
js实现键盘上下左右键选择文字并显示在文本框的方法
2015/05/07 Javascript
基于jquery实现在线选座订座之影院篇
2015/08/24 Javascript
Node.js实现JS文件合并小工具
2016/02/02 Javascript
原生javascript实现图片无缝滚动效果
2016/02/12 Javascript
JS刷新父窗口的几种方式小结(推荐)
2016/11/09 Javascript
canvas绘制表盘时钟
2017/01/23 Javascript
Javascript获取某个月的天数
2018/05/30 Javascript
小程序数据通信方法大全(推荐)
2019/04/15 Javascript
vue.js 2.*项目环境搭建、运行、打包发布的详细步骤
2019/05/01 Javascript
Element-UI+Vue模式使用总结
2020/01/02 Javascript
Node.js API详解之 querystring用法实例分析
2020/04/29 Javascript
Node.js API详解之 module模块用法实例分析
2020/05/13 Javascript
[01:25:09]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第二场
2014/05/24 DOTA
Python操作Access数据库基本步骤分析
2016/09/19 Python
python 日志增量抓取实现方法
2018/04/28 Python
Python+selenium 获取一组元素属性值的实例
2018/06/22 Python
python面向对象实现名片管理系统文件版
2019/04/26 Python
python批量图片处理简单示例
2019/08/06 Python
读取nii或nii.gz文件中的信息即输出图像操作
2020/07/01 Python
CSS3基础(RGBa、text-shadow、box-shadow、border-radius)
2012/11/13 HTML / CSS
银行毕业实习自我鉴定
2013/09/19 职场文书
运动会广播稿100字
2014/01/11 职场文书
八项规定自查自纠报告及整改措施
2014/10/26 职场文书
辩论赛主持人开场白
2015/05/29 职场文书
行为习惯主题班会
2015/08/14 职场文书
新员工入职感言范文!
2019/07/04 职场文书
你对自己的信用报告有过了解吗?
2019/07/09 职场文书
如何解决springcloud feign 首次调用100%失败的问题
2021/06/23 Java/Android