Opencv图像阈值之简单阈值

我们来到了Opencv图像阈值之简单阈值,这一章图像阈值我尽量用最简洁的语言给大家讲解,让大家能更好的运用所学去做些有利于生活的事~

在本章的学习之前我强烈建议大家去复习一下《给图像加水印》

附上链接:http://opencvblog.com/?p=288

阈(yu)值:阈值是临界值的意思。

就是这么简单,

Opencv图像阈值之简单阈值:

设定一个临界值,

高于这个临界值,会出现什么情况;

低于这个临界值,会出现什么情况。

这就是简单与之的方法,不过这个“什么情况”是啥呢?

这个情况,我们要用参数来表示。

我来举个例子:

上一张图片,一会我们就用这张图片了~

这是原图像,不要怀疑你自己的眼睛,就是这个效果的图像,哈哈

我们先来设置一个阈值:127,

不知道大家回头看我推荐的那章了吗?

那一章就是用的简单阈值。

接下来我想说的话,都在那推荐的一章中,

下面我直接上代码,然后在最后坐下总结

# -*- coding:utf-8 -*-
"""
Created on Mon Feb 27 10:35:52 2017

@author: Y

"""

import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('C:\Users\Administrator\Desktop\opencvimg\gradient.png')
ret,thresh1 = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
ret,thresh2 = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY_INV)
ret,thresh3 = cv2.threshold(img, 127, 255, cv2.THRESH_TRUNC)
ret,thresh4 = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO)
ret,thresh5 = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO_INV)

titles = ['Original Image','BINARY','BINARY_INV','TRUNC','TOZERO','TOZERO_INV']
images = [img, thresh1, thresh2, thresh3, thresh4, thresh5]

for i in xrange(6):
    plt.subplot(2,3,i+1),plt.imshow(images[i],'gray')
    plt.title(titles[i])
    plt.xticks([]),plt.yticks([])

plt.show()
cv2.destroyAllWindows()

 

看一下最后的效果图吧~

看下效果图,我来解释下

Original Image:这是原图像;

BINARY:这是原图像的黑白阈值;

BINARY_INV:这是原图像的黑白阈值的反转;

TRUNC:这是原图像的的多像素处理(也叫截断阈值);

cv2.THRESH_TOZERO :这是原图像的0阈值;

cv2.THRESH_TOZERO_INV :这是原图像的0阈值的反转。

我们拿另一张图试一下:

另一张图片,拿去玩耍~

看看我们得到了什么?

第二张图的效果图~

这个没用matplotlib,而是直接用cv2.imshow()了,

一个一个输出放在一块给你们对比一下。

好啦,大家好好对比一下效果,认真理解一下这些处理究竟能干什么呢,在车牌识别的时候会很舒服的。

大家掌握的怎么样?大家一定要回头看我推荐的那章内容,链接就在片首,我是Y,欢迎大家来我的 网站做客。目前我们正在通往Opencv的大道上。以后会慢慢出现人脸识别,车牌识别,AR,VR的内容。大家拜拜喽~

《Opencv图像阈值之简单阈值》有1个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注