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中使用PIL库实现图片高斯模糊实例
Feb 08 Python
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
Apr 23 Python
Python中read()、readline()和readlines()三者间的区别和用法
Jul 30 Python
Python 处理图片像素点的实例
Jan 08 Python
python字典一键多值实例代码分享
Jun 14 Python
python机器学习库scikit-learn:SVR的基本应用
Jun 26 Python
python按修改时间顺序排列文件的实例代码
Jul 25 Python
Python列表list常用内建函数实例小结
Oct 22 Python
使用python实现画AR模型时序图
Nov 20 Python
Pymysql实现往表中插入数据过程解析
Jun 02 Python
如何利用python 读取配置文件
Jan 06 Python
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
Jun 11 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
PHP HTML代码串 截取实现代码
2009/06/29 PHP
一个PHP的String类代码
2010/04/20 PHP
php代码架构的八点注意事项
2016/01/25 PHP
深入剖析浏览器退出之后php还会继续执行么
2016/05/17 PHP
Laravel中log无法写入问题的解决
2017/06/17 PHP
用js遍历 table的脚本
2008/07/23 Javascript
jQuery使用数组编写图片无缝向左滚动
2012/12/11 Javascript
解决Jquery load()加载GB2312页面时出现乱码的两种方案
2013/09/10 Javascript
jquery预览图片实现鼠标放上去显示实际大小
2014/01/16 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
jQuery实现页面倒计时并刷新效果
2017/03/13 Javascript
详谈jQuery.load()和Jsp的include的区别
2017/04/12 jQuery
vue项目中mock.js的使用及基本用法
2019/05/22 Javascript
vue中typescript装饰器的使用方法超实用教程
2019/06/17 Javascript
使用JS监听键盘按下事件(keydown event)
2019/11/07 Javascript
进一步探究Python的装饰器的运用
2015/05/05 Python
安装dbus-python的简要教程
2015/05/05 Python
详解python发送各类邮件的主要方法
2016/12/22 Python
Python使用matplotlib绘图无法显示中文问题的解决方法
2018/03/14 Python
一份python入门应该看的学习资料
2018/04/11 Python
Python爬虫设置代理IP(图文)
2018/12/23 Python
django自带的权限管理Permission用法说明
2020/05/13 Python
python新手学习可变和不可变对象
2020/06/11 Python
一款利用纯css3实现的超炫3D表单的实例教程
2014/12/01 HTML / CSS
HTML5 canvas绘制的玫瑰花效果
2014/05/29 HTML / CSS
介绍一下Linux中的链接
2016/05/28 面试题
酒店应聘自荐信
2013/11/09 职场文书
优秀德育工作者事迹材料
2014/05/07 职场文书
同意迁入证明模板
2014/10/26 职场文书
民主评议政风行风活动心得体会
2014/10/29 职场文书
文言文辞职信
2015/02/28 职场文书
2015年技术工作总结范文
2015/04/20 职场文书
高考1977观后感
2015/06/04 职场文书
什么是创业计划书?什么是商业计划书?这里一一解答
2019/07/12 职场文书
浅谈Redis在直播场景的实践方案
2021/04/27 Redis
python异步的ASGI与Fast Api实现
2021/07/16 Python