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函数返回多个值的示例方法
Dec 04 Python
python的Crypto模块实现AES加密实例代码
Jan 22 Python
python实现电脑自动关机
Jun 20 Python
在Pandas中给多层索引降级的方法
Nov 16 Python
网易有道2017内推编程题 洗牌(python)
Jun 19 Python
python3射线法判断点是否在多边形内
Jun 28 Python
Python API自动化框架总结
Nov 12 Python
Python实现i人事自动打卡的示例代码
Jan 09 Python
深入理解Tensorflow中的masking和padding
Feb 24 Python
Python开发企业微信机器人每天定时发消息实例
Mar 17 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
May 13 Python
PyQt5 文本输入框自动补全QLineEdit的实现示例
May 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
ThinkPHP连接数据库及主从数据库的设置教程
2014/08/22 PHP
php检查是否是ajax请求的方法
2015/04/16 PHP
PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例
2016/01/07 PHP
PHP操作XML中XPath的应用示例
2019/07/04 PHP
浅析Prototype的模板类 Template
2011/12/07 Javascript
js函数调用常用方法详解
2012/12/03 Javascript
js实现图片无缝滚动
2015/12/23 Javascript
javascript获取wx.config内部字段解决微信分享
2016/03/09 Javascript
如何在Linux上安装Node.js
2016/04/01 Javascript
AngularJS入门教程之数据绑定用法示例
2016/11/01 Javascript
angular.js 路由及页面传参示例
2017/02/24 Javascript
兼容浏览器的js事件绑定函数(详解)
2017/05/09 Javascript
JavaScript选取(picking)和反选(rejecting)对象的属性方法
2017/08/16 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
2018/09/26 Javascript
微信小程序实现多行文字超出部分省略号显示功能
2019/10/23 Javascript
你应该知道的python列表去重方法
2017/01/17 Python
Python中二维列表如何获取子区域元素的组成
2017/01/19 Python
使用DataFrame删除行和列的实例讲解
2018/04/08 Python
Python可迭代对象操作示例
2019/05/07 Python
对django的User模型和四种扩展/重写方法小结
2019/08/17 Python
使用Django搭建一个基金模拟交易系统教程
2019/11/18 Python
python、Matlab求定积分的实现
2019/11/20 Python
Scrapy模拟登录赶集网的实现代码
2020/07/07 Python
详解如何使用Pytest进行自动化测试
2021/01/14 Python
css3实现图片遮罩效果鼠标hover以后出现文字
2013/11/05 HTML / CSS
Lovedrobe官网:英国领先的大码服装品牌
2019/09/19 全球购物
失业者真诚求职信范文
2013/12/25 职场文书
行政工作个人的自我评价
2014/02/13 职场文书
婚礼秀策划方案
2014/05/19 职场文书
2014年领导班子专项整治整改方案
2014/09/28 职场文书
群众路线教育实践活动整改落实情况汇报
2014/10/28 职场文书
2014年企业工会工作总结
2014/11/12 职场文书
学雷锋活动简报
2015/07/20 职场文书
新郎结婚感言
2015/07/31 职场文书
javascript的setTimeout()使用方法总结
2021/11/20 Javascript
python编程学习使用管道Pipe编写优化代码
2021/11/20 Python