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 04 Python
实例讲解Python中global语句下全局变量的值的修改
Jun 16 Python
Python读写Json涉及到中文的处理方法
Sep 12 Python
python字符串str和字节数组相互转化方法
Mar 18 Python
python技能之数据导出excel的实例代码
Aug 11 Python
Python设计模式之工厂模式简单示例
Jan 09 Python
python 对字典按照value进行排序的方法
May 09 Python
python模拟键盘输入 切换键盘布局过程解析
Aug 15 Python
Python进度条的制作代码实例
Aug 31 Python
python创建学生成绩管理系统
Nov 22 Python
解决Python pip 自动更新升级失败的问题
Feb 21 Python
python 爬虫如何实现百度翻译
Nov 16 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
打造计数器DIY三步曲(上)
2006/10/09 PHP
PHP实现多条件查询实例代码
2010/07/17 PHP
PHP调用MySQL存储过程并返回值的方法
2014/12/26 PHP
微信公众平台之快递查询功能用法实例
2015/04/14 PHP
详解PHP中websocket的使用方法
2016/09/15 PHP
基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
2013/04/26 Javascript
BootStrap智能表单实战系列(九)表单图片上传的支持
2016/06/13 Javascript
jQuery 3.0十大新特性最终版发布
2016/07/14 Javascript
JS添加或修改控件的样式(Class)实现方法
2016/10/15 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(2)
2017/02/20 Javascript
关于vue.extend和vue.component的区别浅析
2017/08/16 Javascript
解决vue 项目引入字体图标报错、不显示等问题
2018/09/01 Javascript
微信小程序自定义组件传值 页面和组件相互传数据操作示例
2019/05/05 Javascript
jquery实现动态创建form并提交的方法示例
2019/05/27 jQuery
AngularJS动态生成select下拉框的方法实例
2019/11/17 Javascript
在 Vue 中编写 SVG 图标组件的方法
2020/02/24 Javascript
js实现飞机大战小游戏
2020/08/26 Javascript
python查询mysql中文乱码问题
2014/11/09 Python
python中列表元素连接方法join用法实例
2015/04/07 Python
python机器人行走步数问题的解决
2018/01/29 Python
numpy中loadtxt 的用法详解
2018/08/03 Python
DRF跨域后端解决之django-cors-headers的使用
2019/01/27 Python
django跳转页面传参的实现
2020/09/17 Python
html5 div布局与table布局详解
2016/11/16 HTML / CSS
详解window.open被浏览器拦截的解决方案
2019/07/18 HTML / CSS
Booking.com亚太地区:Booking.com APAC
2020/02/07 全球购物
乌克兰移动电子产品和相关配件的在线商店:iTMag
2020/03/16 全球购物
摩飞电器俄罗斯官方网站:Morphy Richards俄罗斯
2020/07/30 全球购物
报关专员求职信范文
2014/02/22 职场文书
教学评估实施方案
2014/03/16 职场文书
语文高效课堂实施方案
2014/05/03 职场文书
大学生社会实践方案
2014/05/11 职场文书
财务会计求职信范文
2015/03/20 职场文书
社区文明创建工作总结2015
2015/04/21 职场文书
小学生读书笔记
2015/07/01 职场文书
python机器学习创建基于规则聊天机器人过程示例详解
2021/11/02 Python