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使用rsa加密算法模块模拟新浪微博登录
Jan 22 Python
解决Python 遍历字典时删除元素报异常的问题
Sep 11 Python
python使用mysql的两种使用方式
Mar 07 Python
python实现雨滴下落到地面效果
Jun 21 Python
Django forms组件的使用教程
Oct 08 Python
在PyCharm中三步完成PyPy解释器的配置的方法
Oct 29 Python
python sorted方法和列表使用解析
Nov 18 Python
python绘制规则网络图形实例
Dec 09 Python
python3通过udp实现组播数据的发送和接收操作
May 05 Python
解决python中import文件夹下面py文件报错问题
Jun 01 Python
opencv 图像礼帽和图像黑帽的实现
Jul 07 Python
python smtplib发送多个email联系人的实现
Oct 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 5.0 Pear安装方法
2006/12/06 PHP
PHP语言中global和$GLOBALS[]的分析 之二
2012/02/02 PHP
Extjs EditorGridPanel中ComboBox列的显示问题
2011/07/04 Javascript
c#和Javascript操作同一json对象的实现代码
2012/01/17 Javascript
js实现动态添加、删除行、onkeyup表格求和示例
2013/08/18 Javascript
javascript读取xml实现javascript分页
2013/12/13 Javascript
Bootstrap实现响应式导航栏效果
2015/12/28 Javascript
JavaScript中捕获与冒泡详解及实例
2017/02/03 Javascript
HTML的select控件美化
2017/03/27 Javascript
Angular+Node生成随机数的方法
2017/06/16 Javascript
jQuery绑定事件方法及区别(bind,click,on,live,one)
2017/08/14 jQuery
原生JavaScript实现Ajax异步请求
2017/11/19 Javascript
微信小程序实现添加手机联系人功能示例
2017/11/30 Javascript
React中Ref 的使用方法详解
2020/04/28 Javascript
Vue实现附件上传功能
2020/05/28 Javascript
JS实现多功能计算器
2020/10/28 Javascript
python批量导出导入MySQL用户的方法
2013/11/15 Python
python3实现windows下同名进程监控
2018/06/21 Python
对python3 中方法各种参数和返回值详解
2018/12/15 Python
Pycharm 设置默认头的图文教程
2019/01/17 Python
python绘制地震散点图
2019/06/18 Python
Python绘制三角函数图(sin\cos\tan)并标注特定范围的例子
2019/12/04 Python
利用css3制作3D样式按钮实现代码
2013/03/18 HTML / CSS
HTML5 canvas基本绘图之绘制线条
2016/06/27 HTML / CSS
德国baby-markt婴儿用品瑞士网站:baby-markt.ch
2017/06/09 全球购物
2014自主招生自荐信策略
2014/01/27 职场文书
给国外客户的邀请函
2014/01/30 职场文书
女娲补天教学反思
2014/02/05 职场文书
2014年秋季开学寄语
2014/08/02 职场文书
学习计划书怎么写
2014/09/15 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
银行客户经理岗位职责
2015/04/09 职场文书
全国法制宣传日活动总结
2015/05/05 职场文书
工作迟到检讨书范文
2015/05/06 职场文书
《扇形统计图》教学反思
2016/02/17 职场文书
详解Redis基本命令与使用场景
2021/06/01 Redis