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获取远程文件大小的函数代码分享
May 13 Python
举例讲解Python设计模式编程的代理模式与抽象工厂模式
Jan 16 Python
利用python批量检查网站的可用性
Sep 09 Python
人生苦短我用python python如何快速入门?
Mar 12 Python
对python numpy.array插入一行或一列的方法详解
Jan 29 Python
ERLANG和PYTHON互通实现过程详解
Jul 05 Python
python3获取文件中url内容并下载代码实例
Dec 27 Python
python中sys模块是做什么用的
Aug 16 Python
python图片合成的示例
Nov 09 Python
python 发送get请求接口详解
Nov 17 Python
只用50行Python代码爬取网络美女高清图片
Jun 02 Python
python如何查找列表中元素的位置
May 30 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下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
2010/12/29 PHP
PHP sprintf()函数用例解析
2011/05/18 PHP
Redis构建分布式锁
2017/03/28 PHP
laravel config文件配置全局变量的例子
2019/10/13 PHP
js实现兼容IE6与IE7的DIV高度
2010/05/13 Javascript
Jquery获取复选框被选中值的简单方法
2013/07/04 Javascript
js中关于一个分号的崩溃示例
2013/11/11 Javascript
js判读浏览器是否支持html5的canvas的代码
2013/11/18 Javascript
Jquery使用小技巧汇总
2015/12/29 Javascript
基于jquery编写分页插件
2016/03/07 Javascript
javascript类型系统——日期Date对象全面了解
2016/07/13 Javascript
AngularJs bootstrap搭载前台框架——准备工作
2016/09/01 Javascript
微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
2017/04/18 Javascript
JavaScript数据结构与算法之队列原理与用法实例详解
2017/11/22 Javascript
Vue 中mixin 的用法详解
2018/04/23 Javascript
基于vue-element组件实现音乐播放器功能
2018/05/06 Javascript
layer设置maxWidth及maxHeight解决方案
2019/07/26 Javascript
layui 实现自动选择radio单选框(checked)的方法
2019/09/03 Javascript
通过实例解析JavaScript for in及for of区别
2020/06/15 Javascript
详解Python中的条件判断语句
2015/05/14 Python
python中字符串前面加r的作用
2015/06/04 Python
21行Python代码实现拼写检查器
2016/01/25 Python
简述Python中的进程、线程、协程
2016/03/18 Python
Python黑魔法Descriptor描述符的实例解析
2016/06/02 Python
对python读写文件去重、RE、set的使用详解
2018/12/11 Python
python多任务及返回值的处理方法
2019/01/22 Python
python生成requirements.txt的两种方法
2019/09/18 Python
python利用openpyxl拆分多个工作表的工作簿的方法
2019/09/27 Python
印度婴儿用品在线商店:Firstcry.com
2016/12/05 全球购物
中国网上药店领导者:1药网
2017/02/16 全球购物
皇家阿尔伯特英国官方商店:Royal Albert骨瓷
2019/03/25 全球购物
免税水晶:Duty Free Crystal
2019/05/13 全球购物
怎样声明子类
2013/07/02 面试题
村党支部群众路线教育实践活动对照检查材料
2014/09/26 职场文书
vue3使用vue-router的完整步骤记录
2021/06/20 Vue.js
世界十大动漫制作公司排行榜,迪士尼上榜,第二是美国代表性文化符
2022/03/18 欧美动漫