图像进行二值化是为了使整体的图像凸显为黑和白的效果
常用的是设置阈值T,用T把图像的数据分为两部分,大于T的像素群和小于T的像素群
最常用的是大津法进行二值化,从内方差和类间方差的比值得到
以下是详细的代码书写
import cv2
import numpy as np
img = cv2.imread("C:/Users/JackXing/Pictures/test.jpg").astype(np.float)
H, W, C = img.shape
b = img[:, :, 0].copy()
g = img[:, :, 1].copy()
r = img[:, :, 2].copy()
#灰度化处理
out = 0.2126*r+0.7152*g+0.0722*b #使用加权平均法进行对彩色图进行作灰度化处理
out = out.astype(np.uint8)#将输出的图像转变为uint8
cv2.imshow("result0",out)
#进行二值化
'''
图像进行二值化是为了使整体的图像凸显为黑和白的效果
常用的是设置阈值T,用T把图像的数据分为两部分,大于T的像素群和小于T的像素群
最常用的是大津法进行二值化,从内方差和类间方差的比值得到
注意在这个地方需要注意的有
numpy下的size、shape、len的区别
np.zeros(返回的是数的总数)
np.shape(返回的是维度的大小
len返回的是长度
'''
max_sigma=0
max_t=0
#使用类内方差与类间方差的比值来确定阈值的大小
for _t in range(1, 255):
v0 = out[np.where(out < _t)]
m0 = n