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函数式编程
Jun 09 Python
Python程序中用csv模块来操作csv文件的基本使用教程
Mar 03 Python
python通过opencv实现批量剪切图片
Nov 13 Python
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
Apr 17 Python
Python装饰器简单用法实例小结
Dec 03 Python
python之线程通过信号pyqtSignal刷新ui的方法
Jan 11 Python
简单了解python 邮件模块的使用方法
Jul 24 Python
使用Python的datetime库处理时间(RPA流程)
Nov 24 Python
如何将 awk 脚本移植到 Python
Dec 09 Python
python如何把字符串类型list转换成list
Feb 18 Python
浅析Python 字符编码与文件处理
Sep 24 Python
Python中pass的作用与使用教程
Nov 13 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
总集篇&特番节目先行播出!《SAO Alicization War of Underworld》第2季度TV动画4月25日放送!
2020/03/06 日漫
基于PHPExcel的常用方法总结
2013/06/13 PHP
php获取当前url地址的方法小结
2017/01/10 PHP
检测是否已安装 .NET Framework 3.5的js脚本
2009/02/14 Javascript
qTip2 精致的基于jQuery提示信息插件
2012/02/17 Javascript
JavaScript 基础篇之对象、数组使用介绍(三)
2012/04/07 Javascript
jQuery客户端分页实例代码
2013/11/18 Javascript
javascript四舍五入函数代码分享(保留后几位)
2013/12/10 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
2015/02/04 Javascript
jQuery实现新消息闪烁标题提示的方法
2015/03/11 Javascript
JS绘制生成花瓣效果的方法
2015/08/05 Javascript
JavaScript的instanceof运算符学习教程
2016/06/08 Javascript
JS对象创建的几种方式整理
2017/02/28 Javascript
微信小程序多张图片上传功能
2017/06/07 Javascript
基于Vuex无法观察到值变化的解决方法
2018/03/01 Javascript
jQuery实现网页拼图游戏
2020/04/22 jQuery
js的对象与函数详解
2019/01/21 Javascript
vue柱状进度条图像的完美实现方案
2019/08/26 Javascript
Windows上node.js的多版本管理工具用法实例分析
2019/11/06 Javascript
Python基于回溯法子集树模板解决0-1背包问题实例
2017/09/02 Python
详解Python中的分组函数groupby和itertools)
2018/07/11 Python
Python中@property的理解和使用示例
2019/06/11 Python
python多线程分块读取文件
2019/08/29 Python
在keras中获取某一层上的feature map实例
2020/01/24 Python
python的sys.path模块路径添加方式
2020/03/09 Python
python matplotlib 绘图 和 dpi对应关系详解
2020/03/14 Python
python 5个实用的技巧
2020/09/27 Python
全球知名旅游社区巴西站点:TripAdvisor巴西
2016/07/21 全球购物
英国最大的电脑零售连锁店集团:PC World
2016/10/10 全球购物
Exoticca英国:以最优惠的价格提供豪华异国情调旅行
2018/10/18 全球购物
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2012/04/17 面试题
医学实习生自我鉴定
2013/12/12 职场文书
环境卫生标语
2014/06/09 职场文书
2014年终工作总结范本
2014/12/15 职场文书
公司酒会主持词
2015/07/02 职场文书
初中历史教学反思
2016/02/19 职场文书