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中使用第三方模块的教程
Apr 27 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
Jun 01 Python
python3使用pyqt5制作一个超简单浏览器的实例
Oct 19 Python
深入理解Python单元测试unittest的使用示例
Nov 18 Python
Python利用正则表达式实现计算器算法思路解析
Apr 25 Python
Python中py文件引用另一个py文件变量的方法
Apr 29 Python
python实现守护进程、守护线程、守护非守护并行
May 05 Python
由Python编写的MySQL管理工具代码实例
Apr 09 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
May 31 Python
Python创建或生成列表的操作方法
Jun 19 Python
实例详解Python模块decimal
Jun 26 Python
python Tkinter模块使用方法详解
Apr 07 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
Zerg建筑一览
2020/03/14 星际争霸
德生PL450的电路分析和低放电路的改进办法
2021/03/02 无线电
php对二维数组按指定键值key排序示例代码
2013/11/26 PHP
一波PHP中cURL库的常见用法代码示例
2016/05/06 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
详解PHP中foreach的用法和实例
2016/10/25 PHP
php preg_match的匹配不同国家语言实例
2016/12/29 PHP
PHP数组内存利用率低和弱类型详细解读
2017/08/10 PHP
浅谈laravel中的关联查询with的问题
2019/10/10 PHP
如何用js控制css中的float的代码
2007/08/16 Javascript
js 多浏览器分别判断代码
2010/04/01 Javascript
js 未结束的字符串常量错误解决方法
2010/06/13 Javascript
jQuery表单验证插件formValidator(改进版)
2012/02/03 Javascript
js自动生成对象的属性示例代码
2013/10/28 Javascript
Js实现动态添加删除Table行示例
2014/04/14 Javascript
一个css与js结合的下拉菜单支持主流浏览器
2014/10/08 Javascript
Jquery实现仿腾讯微博发表广播
2014/11/17 Javascript
JS实现自动切换文字的导航效果代码
2015/08/27 Javascript
浅谈Vue的基本应用
2016/12/27 Javascript
EasyUI学习之Combobox级联下拉列表(2)
2016/12/29 Javascript
JS图片压缩(pc端和移动端都适用)
2017/01/12 Javascript
nodejs根据ip数组在百度地图中进行定位
2017/03/06 NodeJs
基于mpvue的简单弹窗组件mptoast使用详解
2019/08/02 Javascript
Vue实现验证码功能
2019/12/03 Javascript
JavaScript Event Loop相关原理解析
2020/06/10 Javascript
vue打包通过image-webpack-loader插件对图片压缩优化操作
2020/11/12 Javascript
全面解析Python的While循环语句的使用方法
2015/10/13 Python
使用Python从有道词典网页获取单词翻译
2016/07/03 Python
python石头剪刀布小游戏(三局两胜制)
2021/01/20 Python
Python使用crontab模块设置和清除定时任务操作详解
2019/04/09 Python
世界上最伟大的马产品:Equiderma
2020/01/07 全球购物
后勤人员自我鉴定
2013/10/20 职场文书
应聘美工求职信
2013/11/07 职场文书
采购部主管岗位职责
2014/01/01 职场文书
法律专业大学生职业生涯规划书:向目标一步步迈进
2014/09/22 职场文书
导游词之重庆渣滓洞
2020/01/08 职场文书