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实现可将字符转换成大写的tcp服务器实例
Apr 29 Python
Python自动化测试ConfigParser模块读写配置文件
Aug 15 Python
对python中的logger模块全面讲解
Apr 28 Python
Python一句代码实现找出所有水仙花数的方法
Nov 13 Python
Python爬取视频(其实是一篇福利)过程解析
Aug 01 Python
TensorFlow车牌识别完整版代码(含车牌数据集)
Aug 05 Python
python制作朋友圈九宫格图片
Nov 03 Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
Dec 03 Python
Jupyter Notebook折叠输出的内容实例
Apr 22 Python
Python datetime 如何处理时区信息
Sep 02 Python
python tqdm实现进度条的示例代码
Nov 10 Python
python 提取html文本的方法
May 20 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动态创建Flash动画
2006/10/09 PHP
将PHP作为Shell脚本语言使用
2006/10/09 PHP
ADODB结合SMARTY使用~超级强
2006/11/25 PHP
php cookie 登录验证示例代码
2009/03/16 PHP
php excel reader读取excel内容存入数据库实现代码
2012/12/06 PHP
PHP批量上传图片的具体实现方法介绍.
2014/02/26 PHP
php生成xml时添加CDATA标签的方法
2014/10/17 PHP
PHP实现导出带样式的Excel
2016/08/28 PHP
Zend Framework基于Command命令行建立ZF项目的方法
2017/02/18 PHP
jQuery使用一个按钮控制图片的伸缩实现思路
2013/04/19 Javascript
Bootstrap Paginator分页插件使用方法详解
2016/05/30 Javascript
微信页面弹出键盘后iframe内容变空白的解决方案
2017/09/20 Javascript
使用Vue开发一个实时性时间转换指令
2018/01/17 Javascript
JS获取子节点、父节点和兄弟节点的方法实例总结
2018/07/06 Javascript
js中int和string数据类型互相转化实例
2019/01/16 Javascript
Vue中的transition封装组件的实现方法
2019/08/13 Javascript
深入理解javascript prototype的相关知识
2019/09/19 Javascript
微信小程序实现一个简单swiper代码实例
2019/12/30 Javascript
vue实现移动端项目多行文本溢出省略
2020/07/29 Javascript
[02:51]2014DOTA2 TI小组赛总结中国军团全部进军钥匙球馆
2014/07/15 DOTA
在Python的Flask框架中使用日期和时间的教程
2015/04/21 Python
分享一下Python 开发者节省时间的10个方法
2015/10/02 Python
python用户管理系统的实例讲解
2017/12/23 Python
Python中print函数简单使用总结
2019/08/05 Python
Pandas-Cookbook 时间戳处理方式
2019/12/07 Python
HTML5 语义化结构化规范化
2008/10/17 HTML / CSS
internal修饰符起什么作用
2013/12/16 面试题
大学生收银员求职信分享
2014/01/02 职场文书
党员个人公开承诺书
2014/08/29 职场文书
先进员工事迹材料
2014/12/20 职场文书
保研推荐信范文
2015/03/25 职场文书
厉行节约工作总结
2015/08/12 职场文书
《司马光》教学反思
2016/02/22 职场文书
Java org.w3c.dom.Document 类方法引用报错
2021/08/07 Java/Android
Python尝试实现蒙特卡罗模拟期权定价
2022/04/21 Python
win10识别不了U盘怎么办 win10系统读取U盘失败的解决办法
2022/08/05 数码科技