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随机生成一个6位的验证码代码分享
Mar 24 Python
Python的Bottle框架中获取制定cookie的教程
Apr 24 Python
Python数据分析之双色球中蓝红球分析统计示例
Feb 03 Python
JavaScript实现一维数组转化为二维数组
Apr 17 Python
opencv与numpy的图像基本操作
Mar 08 Python
python实现维吉尼亚加密法
Mar 20 Python
在python中修改.properties文件的操作
Apr 08 Python
Numpy中ndim、shape、dtype、astype的用法详解
Jun 14 Python
学习Python爬虫的几点建议
Aug 05 Python
python如何将图片转换素描画
Sep 08 Python
python实现发送QQ邮件(可加附件)
Dec 23 Python
Pytorch distributed 多卡并行载入模型操作
Jun 05 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支付宝手机网页支付类实例
2015/03/04 PHP
php微信公众账号开发之前五个坑(一)
2016/09/18 PHP
laravel5使用freetds连接sql server的方法
2018/12/07 PHP
JavaScript 解析读取XML文档 实例代码
2009/07/07 Javascript
原来Jquery.load的方法可以一直load下去
2011/03/28 Javascript
js获取当前月的第一天和最后一天的小例子
2013/11/18 Javascript
使用ajaxfileupload.js实现ajax上传文件php版
2014/06/26 Javascript
jQuery 常用代码集锦(必看篇)
2016/05/16 Javascript
浅谈JS中的三种字符串连接方式及其性能比较
2016/09/02 Javascript
JavaScript排序算法动画演示效果的实现方法
2016/10/18 Javascript
微信小程序页面传值实例分析
2017/04/19 Javascript
LayerClose弹窗关闭刷新方法
2018/08/17 Javascript
微信小程序使用swiper组件实现类3D轮播图
2018/08/29 Javascript
移动端底部导航固定配合vue-router实现组件切换功能
2019/06/13 Javascript
JS把字符串格式的时间转换成几秒前、几分钟前、几小时前、几天前等格式
2019/07/10 Javascript
vue将后台数据时间戳转换成日期格式
2019/07/31 Javascript
原生js基于canvas实现一个简单的前端截图工具代码实例
2019/09/10 Javascript
layui异步加载table表中某一列数据的例子
2019/09/16 Javascript
vue实现简易图片左右旋转,上一张,下一张组件案例
2020/07/31 Javascript
Python+django实现文件下载
2016/01/17 Python
利用Python画ROC曲线和AUC值计算
2016/09/19 Python
python 执行shell命令并将结果保存的实例
2018/05/11 Python
python flask实现分页的示例代码
2018/08/02 Python
python实现将汉字保存成文本的方法
2018/11/16 Python
Python图像处理库PIL的ImageDraw模块介绍详解
2020/02/26 Python
python实现简单的五子棋游戏
2020/09/01 Python
梅西百货澳大利亚:Macy’s Australia
2017/07/26 全球购物
英国天然有机美容护肤品:Neal’s Yard Remedies
2018/05/05 全球购物
马来西亚综合购物网站:Lazada马来西亚
2018/06/05 全球购物
vue 中 get / delete 传递数组参数方法
2021/03/23 Vue.js
2014年五四青年节活动方案
2014/03/29 职场文书
个人工作作风整改措施思想汇报
2014/10/13 职场文书
教师个人师德总结
2015/02/06 职场文书
新郎接新娘保证书
2015/05/08 职场文书
小学生家长意见
2015/06/03 职场文书
《一面五星红旗》教学反思
2016/02/23 职场文书