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使用pylab库实现画线功能的方法详解
Jun 08 Python
对python中的xlsxwriter库简单分析
May 04 Python
python3 实现验证码图片切割的方法
Dec 07 Python
Python设计模式之适配器模式原理与用法详解
Jan 15 Python
Python Pandas 获取列匹配特定值的行的索引问题
Jul 01 Python
Python-Tkinter Text输入内容在界面显示的实例
Jul 12 Python
python fuzzywuzzy模块模糊字符串匹配详细用法
Aug 29 Python
wxpython实现按钮切换界面的方法
Nov 19 Python
Pytorch环境搭建与基本语法
Jun 03 Python
matplotlib自定义鼠标光标坐标格式的实现
Jan 08 Python
Python使用tkinter制作在线翻译软件
Feb 22 Python
Python Pytorch查询图像的特征从集合或数据库中查找图像
Apr 09 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判断手机是IOS还是Android
2015/12/09 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
2017/06/11 PHP
jQuery实现随意改变div任意属性的名称和值(部分原生js实现)
2013/05/28 Javascript
jquery实现select选中行、列合计示例
2014/04/25 Javascript
兼容各大浏览器的JavaScript阻止事件冒泡代码
2015/07/09 Javascript
JS实现的文字与图片定时切换效果代码
2015/10/06 Javascript
基于Javascript实现二级联动菜单效果
2016/03/04 Javascript
正则表达式替换html元素属性的方法
2016/11/26 Javascript
JavaScript实现瀑布流以及加载效果
2017/02/11 Javascript
很棒的vue弹窗组件
2017/05/24 Javascript
vue子组件使用自定义事件向父组件传递数据
2017/05/27 Javascript
JavaScript中使用Async实现异步控制
2017/08/15 Javascript
详解开源的JavaScript插件化框架MinimaJS
2017/10/26 Javascript
vue实现模态框的通用写法推荐
2018/02/26 Javascript
JS开发 富文本编辑器TinyMCE详解
2019/07/19 Javascript
Layui数据表格跳转到指定页的实现方法
2019/09/05 Javascript
Vue 设置axios请求格式为form-data的操作步骤
2019/10/29 Javascript
jQuery实现滑动星星评分效果(每日分享)
2019/11/13 jQuery
python结合API实现即时天气信息
2016/01/19 Python
详解Python装饰器由浅入深
2016/12/09 Python
解决python os.mkdir创建目录失败的问题
2018/10/16 Python
对Python 3.2 迭代器的next函数实例讲解
2018/10/18 Python
Python PO设计模式的具体使用
2019/08/16 Python
Python使用百度api做人脸对比的方法
2019/08/28 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
2019/10/12 Python
selenium3.0+python之环境搭建的方法步骤
2021/02/01 Python
详解background属性的8个属性值(面试题)
2020/11/02 HTML / CSS
CSS3.0实现霓虹灯按钮动画特效的示例代码
2021/01/12 HTML / CSS
EJB需直接实现它的业务接口或Home接口吗,请简述理由
2016/11/23 面试题
大学应届毕业生个人求职信
2013/09/23 职场文书
八年级音乐教学反思
2014/01/09 职场文书
地球物理学专业推荐信
2014/09/08 职场文书
写给导师的自荐信
2015/03/06 职场文书
2016年春节问候语
2015/11/11 职场文书
浅谈pytorch中stack和cat的及to_tensor的坑
2021/05/20 Python
了解Kubernetes中的Service和Endpoint
2022/04/01 Servers