2020-10-15超大图像二值化

超大图像的二值化方法
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)
局部阈值的方法
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容