python opencv 按照hsv筛选过滤背景图片


  • 20190925

  1. 博客背景

    高分辨率图像为了方便处理,经常会有切分为小图的应用场景。在切分过程中总会有些小图中背景图像占很大一部分,需要再筛选过滤掉。

  2. 代码实现

    此处只展示计算白色背景占比。

    import cv2
    import numpy as np
    from skimage import io
    import matplotlib.pyplot as plt 
    import skimage.morphology as sm
    # import skimage.filters.rank as sfr
    
    def patch_white_percent(img):
        hsv=cv2.cvtColor(img,cv2.COLOR_RGB2HSV)
        # red_mask=cv2.inRange(hsv,np.array([156,43,46]),np.array([180,255,255]))
        # purple_mask=cv2.inRange(hsv,np.array([125,43,46]),np.array([155,255,255]))
        # blue_mask=cv2.inRange(hsv,np.array([100,43,46]),np.array([124,255,255]))
        # cyan_mask=cv2.inRange(hsv,np.array([78,43,46]),np.array([99,255,255]))
        # green_mask=cv2.inRange(hsv,np.array([35,43,46]),np.array([77,255,255]))
        # yellow_mask=cv2.inRange(hsv,np.array([26,43,46]),np.array([34,255,255]))
        # orange_mask=cv2.inRange(hsv,np.array([11,43,46]),np.array([25,255,255]))
        # # gray_mask=cv2.inRange(hsv,np.array([0,0,46]),np.array([180,43,220]))
        # # black_mask=cv2.inRange(hsv,np.array([0,0,0]),np.array([180,255,46]))
        # mask1=red_mask+purple_mask+blue_mask+cyan_mask+green_mask+yellow_mask+orange_mask+gray_mask+black_mask
        # mask1_temp = np.where(mask1>1,1,0)
    
        white_mask = cv2.inRange(hsv , np.array([0,0,221]) , np.array([180,30,255]))
        
    	#### 因为白色是不需要的颜色,所以做了先开后闭的处理
        dst = sm.opening(white_mask,sm.disk(5))
        # dst = sfr.median(dst, sm.disk(3)) #中值滤波去小点(此处作用不大,可以省略)
        white = sm.closing(dst,sm.disk(5))
    
        plt.subplot(221)
        plt.title('img')
        plt.imshow(org_thumnail)
        plt.subplot(222)
        plt.title('white_mask')
        plt.imshow(white_mask)
        plt.subplot(223)
        plt.title('white_end')
        plt.imshow(white)
        plt.show()
        
    	#### 计算白色背景占比
        mask1_temp = np.where(white>1,1,0)
        percent_temp = np.sum(mask1_temp)/(mask1_temp.shape[0]*mask1_temp.shape[1])
        return percent_temp
    
    img = r"C:\Data\20190917_ndpi\20190925171451342_01_HER2_2816_4352.png"
    img = io.imread(img)
    
    percent_temp = patch_white_percent(img)
    print('#### percent_temp',percent_temp)
    
  3. 输入图像与结果展示
    在这里插入图片描述
    在这里插入图片描述

    #### percent_temp 0.2086181640625
    
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值