超大图像二值化

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


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):
        for col in range(0, w, cw):
            roi = gray[row:row+ch, col:col+cw]
            print(np.std(roi), np.mean(roi))
            dev = np.std(roi)
            if dev < 15:
                gray[row:row+ch, col:col+cw] = 255
            else:
                ret,dst=cv.threshold(roi,0,255,cv.THRESH_BINARY | cv.THRESH_OTSU)
                gray[row:row+ch, col:col+cw] = dst
    cv.imwrite('./result_binary.png', gray)

src = cv.imread('./11.jpg')  # blue, green, red
# cv.namedWindow('input image', cv.WINDOW_AUTOSIZE)
# cv.imshow('input image', src)
big_image_binary(src)
cv.waitKey(0)

cv.destroyAllWindows()

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2621041184@qq.com