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监控网卡流量并使用graphite绘图的示例
Apr 27 Python
Python实现删除Android工程中的冗余字符串
Jan 19 Python
Python tkinter label 更新方法
Oct 11 Python
python查看模块,对象的函数方法
Oct 16 Python
python后端接收前端回传的文件方法
Jan 02 Python
pandas基于时间序列的固定时间间隔求均值的方法
Jul 04 Python
python命名空间(namespace)简单介绍
Aug 10 Python
浅谈pycharm使用及设置方法
Sep 09 Python
Python读写文件模式和文件对象方法实例详解
Sep 17 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
Mar 12 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
Jun 29 Python
一篇文章搞懂python混乱的切换操作与优雅的推导式
Aug 23 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获取文件夹内文件数的方法
2015/03/12 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
2017/11/20 PHP
Hutia 的 JS 代码集
2006/10/24 Javascript
JavaScript与函数式编程解释
2007/04/27 Javascript
JavaScript入门教程(8) Location地址对象
2009/01/31 Javascript
JavaScript 格式字符串的应用
2010/03/29 Javascript
跟着Jquery API学Jquery之一 选择器
2010/04/07 Javascript
javascript之Partial Application学习
2013/01/10 Javascript
JQuery插件iScroll实现下拉刷新,滚动翻页特效
2014/06/22 Javascript
JavaScript实现生成GUID(全局统一标识符)
2014/09/05 Javascript
Javascript中this的用法详解
2014/09/22 Javascript
jQuery动态添加与删除tr行实例代码
2016/10/18 Javascript
vue 虚拟dom的patch源码分析
2018/03/01 Javascript
浅谈vue项目如何打包扔向服务器
2018/05/08 Javascript
Layer弹出层动态获取数据的方法
2018/08/20 Javascript
Nuxt.js之自动路由原理的实现方法
2018/11/21 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
2019/11/18 Javascript
js中Function引用类型常见有用的方法和属性详解
2019/12/11 Javascript
[01:02]DOTA2上海特锦赛SHOWOPEN
2016/03/25 DOTA
寻找网站后台地址的python脚本
2014/09/01 Python
python查找指定具有相同内容文件的方法
2015/06/28 Python
Python使用matplotlib简单绘图示例
2018/02/01 Python
详解安装mitmproxy以及遇到的坑和简单用法
2019/01/21 Python
python执行精确的小数计算方法
2019/01/21 Python
意大利在线购买隐形眼镜网站:VisionDirect.it
2019/03/18 全球购物
意大利咖啡、浓缩咖啡和浓缩咖啡机:illy caffe
2019/03/20 全球购物
英国现代家具和照明购物网站:Heal’s
2019/10/30 全球购物
哈曼俄罗斯官方网上商店:Harman.club
2020/07/24 全球购物
学生出入校管理制度
2014/01/16 职场文书
不拖欠农民工工资承诺书
2014/03/31 职场文书
蛋糕店创业计划书
2014/05/06 职场文书
求职信标题怎么写
2014/05/26 职场文书
关于读书的演讲稿600字
2014/08/27 职场文书
高三语文复习计划
2015/01/19 职场文书
2016年情人节问候语
2015/11/11 职场文书
jdbc中自带MySQL 连接池实践示例
2022/07/23 MySQL