图像处理

图片处理-opencv-4.图像阈值化

2020-10-15  本文已影响0人  lk311

图像阈值化

图像的二值化或阈值化(Binarization)旨在提取图像中的目标物体,将背景以及噪声区分开来。通常会设定一个阈值T,通过T将图像的像素划分为两类:大于T的像素群和小于T的像素群。
灰度转换处理后的图像中,每个像素都只有一个灰度值,其大小表示明暗程度。二值化处理可以将图像中的像素划分为两类颜色


图像阈值化处理操作,包括二进制阈值化、反二进制阈值化、截断阈值化、反阈值化为0、阈值化为0

retval, dst = cv2.threshold(src, thresh, maxval, type)

import cv2
import numpy as np
import matplotlib.pyplot as plt
plt.figure(figsize=(15, 10))

#读取图像
img = cv2.imread('data/test1.jpg')
lenna_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
GrayImage = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

#阈值化处理
#二进制阈值化
ret, thresh1 = cv2.threshold(GrayImage, 127, 255, cv2.THRESH_BINARY)
#反二进制阈值化
ret, thresh2 = cv2.threshold(GrayImage, 127, 255, cv2.THRESH_BINARY_INV)
#截断阈值化
ret, thresh3 = cv2.threshold(GrayImage, 127, 255, cv2.THRESH_TRUNC)
#阈值化为0
ret, thresh4 = cv2.threshold(GrayImage, 127, 255, cv2.THRESH_TOZERO)
#反阈值化为0
ret, thresh5 = cv2.threshold(GrayImage, 127, 255, cv2.THRESH_TOZERO_INV)

#显示结果
titles = [
    'Gray Image', 'BINARY', 'BINARY_INV', 'TRUNC', 'TOZERO', 'TOZERO_INV'
]
images = [GrayImage, thresh1, thresh2, thresh3, thresh4, thresh5]
for i in range(6):
    plt.subplot(2, 3, i + 1)
    plt.imshow(images[i], 'gray')
    plt.title(titles[i])
    plt.xticks([]), plt.yticks([])
plt.show()
image.png
上一篇下一篇

猜你喜欢

热点阅读