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框架中显示对象子集的方法
Jul 21 Python
Python安装官方whl包和tar.gz包的方法(推荐)
Jun 04 Python
python学习之matplotlib绘制散点图实例
Dec 09 Python
Pycharm设置界面全黑的方法
May 23 Python
Python实现正整数分解质因数操作示例
Aug 01 Python
Python面向对象进阶学习
May 21 Python
python打开windows应用程序的实例
Jun 28 Python
django实现用户注册实例讲解
Oct 30 Python
python利用dlib获取人脸的68个landmark
Nov 27 Python
python清空命令行方式
Jan 13 Python
python计算导数并绘图的实例
Feb 29 Python
Python数据可视化之Seaborn的安装及使用
Apr 19 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
正义联盟的终局之战《天启星战争》将成为DC动画宇宙的最后一部
2020/04/09 欧美动漫
PHP设计模式之解释器模式的深入解析
2013/06/13 PHP
php设置允许大文件上传示例代码
2014/03/10 PHP
PHP7正式版测试,性能惊艳!
2015/12/08 PHP
laravel 错误处理,接口错误返回json代码
2019/10/25 PHP
漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha)
2007/04/27 Javascript
SWFObject Flash js调用类
2008/07/08 Javascript
jQuery 设置 CSS 属性示例介绍
2014/01/16 Javascript
jquery通过load获取文件的内容并跳到锚点的方法
2015/01/29 Javascript
javascript中typeof操作符和constucor属性检测
2015/02/26 Javascript
理解nodejs的stream和pipe机制的原理和实现
2017/08/12 NodeJs
在vue中多次调用同一个定义全局变量的实例
2018/09/25 Javascript
JavaScript实现捕获鼠标坐标
2020/04/12 Javascript
es6函数中的作用域实例分析
2020/04/18 Javascript
Vue循环遍历选项赋值到对应控件的实现方法
2020/06/22 Javascript
详解node.js 事件循环
2020/07/22 Javascript
Python笔记(叁)继续学习
2012/10/24 Python
python使用正则表达式检测密码强度源码分享
2014/06/11 Python
Python实现发送email的几种常用方法
2014/08/18 Python
Python类属性的延迟计算
2016/10/22 Python
Python爬虫包BeautifulSoup简介与安装(一)
2018/06/17 Python
Python Django 实现简单注册功能过程详解
2019/07/29 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
2019/11/11 Python
在python中修改.properties文件的操作
2020/04/08 Python
Python简单实现词云图代码及步骤解析
2020/06/04 Python
Python调用jar包方法实现过程解析
2020/08/11 Python
Python做图像处理及视频音频文件分离和合成功能
2020/11/24 Python
Python之京东商品秒杀的实现示例
2021/01/06 Python
python可视化分析的实现(matplotlib、seaborn、ggplot2)
2021/02/03 Python
青蓝工程实施方案
2014/03/27 职场文书
食品采购员岗位职责
2014/04/14 职场文书
社区党建工作方案
2014/06/10 职场文书
美术学专业求职信
2014/07/23 职场文书
农林经济管理专业自荐信
2014/09/01 职场文书
晋江市委常委班子四风问题整改工作方案
2014/10/26 职场文书
历史名人教你十五个读书方法,赶快Get起来!
2019/07/18 职场文书