超大图像的二值化方法
1.可以采用分块方法,
⒉.先缩放处理就行二值化,然后还原大小
全局阈值的方法
def big_image_binary(image):
print(image.shape)
#每个小块多大,多宽
cw = 256
ch = 256
h,w = image.shape[:2]
gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)
for row in range(0,h,ch):#从0开始,到h结束,步长ch 将一张图片每隔ch * cw分成一份
for col in range(0,w,cw):
roi = gray[row:row+ch,col:col+cw]
ret,dst = cv.threshold(roi,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU)# 首先是返回的阈值 要返回ret
gray[row:row + ch, col:col + cw]=dst
print(np.std(dst),np.mean(dst))# 均值,方差
cv.imwrite("C:/Users/tzt/Desktop/opencv-python/result_binary.jpg",gray)
最后的图像
局部阈值的方法 很好哈哈哈!!!
def big_image_binary(image):
print(image.shape)
#每个小块多大,多宽
cw = 256
ch = 256
h,w = image.shape[:2]
gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)
for row in range(0,h,ch):#从0开始,到h结束,步长ch
for col in range(0,w,cw):
roi = gray[row:row+ch,col:col+cw]
dst = cv.adaptiveThreshold(roi,255,cv.ADAPTIVE_THRESH_GAUSSIAN_C,cv.THRESH_BINARY,127,10)# Block Size -127 邻域大小(用来计算阈值的区域大小)。C - 10这就是是一个常数,阈值就等于的平均值或者加权平均值减去这个常数。大于该值时才会变白色或黑色
gray[row:row + ch, col:col + cw]=dst
print(np.std(dst),np.mean(dst))# 均值,方差
cv.imwrite("C:/Users/tzt/Desktop/opencv-python/result_binary1.jpg",gray)