【opencv自学笔记】10下:超大图像二值化

先分块,在局部二值化

# -*- coding: utf-8 -*-
"""
超大图像二值化
图像ROI与空白图像过滤
局部阈值图像二值化
@author: LNP
"""
import cv2 as cv
import numpy as np
def big_image_demo(image):
    gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY)
    h,w=image.shape[:2]
    sh,sw=256,256
    #split=np.zeros([sh,sw],np.uint8)
    for row in range(0,h,sh):
        for col in range(0,w,sw):
            roi=gray[row:row+sh,col:col+sw]
            dev=np.std(roi)#标准差小于5,表明图像很白,用于消除雪花
            if dev<5:
                gray[row:row+sh,col:col+sw]=255
            else:
                dst=cv.adaptiveThreshold(roi,255,cv.ADAPTIVE_THRESH_GAUSSIAN_C,cv.THRESH_BINARY,127,20)
                #ret,dst=cv.threshold(roi,0,255,cv.THRESH_BINARY | cv.THRESH_OTSU) #全局阈值效果不好
                gray[row:row+sh,col:col+sw]=dst
            
    cv.namedWindow('big_image_demo',cv.WINDOW_FREERATIO)
    cv.imshow('big_image_demo',gray)

src=cv.imread("D:/Study/opencv/code/big.jpg")

cv.namedWindow('src',cv.WINDOW_FREERATIO)
cv.imshow('src',src)

big_image_demo(src)


cv.waitKey(0)
cv.destroyAllWindows()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值