【问题标题】:How to modify pixel values in numpy array of HSV image data?如何修改 HSV 图像数据的 numpy 数组中的像素值?
【发布时间】:2015-09-04 11:18:15
【问题描述】:

我有 HSV 图像数据的 numpy 数组:

形状:

(960, 1280, 3)

数据:

 [[ 90  53  29]
  [ 90  53  29]
  [ 68  35  29]
  ..., 
  [ 66  28 146]
  [ 58  21 145]
  [ 58  21 145]]

 [[ 90  53  29]
  [ 90  53  29]
  [ 75  35  29]
  ..., 
  [ 65  31 148]
  [ 69  18 144]
  [ 69  18 144]]]

我想创建一个过滤器(例如“H 200”)并基于该过滤器来修改数组,以便我可以将 HSV 值设置为我需要的值,例如 [0 0 0]。

我无法理解索引系统,应该如何处理?

【问题讨论】:

    标签: python arrays numpy hsv


    【解决方案1】:

    您创建一个掩码数组来选择您想要更改的元素:

    H = image[:,:,0]
    V = image[:,:,2]
    mask = (H < 20) & (V > 200)
    image[mask] = 0
    

    【讨论】:

    • 谢谢,我“知道”它一定很简单.. :) 如果我想将其他东西定义为值怎么办,例如 [127 64 100]?
    【解决方案2】:

    假设 hsv 作为输入 hsv 图像数据,您可以使用一些 reshapingboolean indexing 将所有三个通道设置为通用三元组,就像这样 -

    newvals = np.array([127,64,100])
    
    mask = (hsv[:,:,0] < 20) | (hsv[:,:,2]> 200)
    hsv.reshape(-1,3)[mask.ravel()] = newvals
    

    示例运行 -

    In [13]: hsv
    Out[13]: 
    array([[[155, 179, 207],
            [200,  52, 185],
            [241, 139, 232],
            [188, 149, 117]],
    
           [[145, 169, 116],
            [146, 134, 108],
            [ 74,  34, 121],
            [  9, 190,  91]],
    
           [[240, 207, 228],
            [140, 158, 124],
            [179, 154, 212],
            [ 79, 166, 131]]], dtype=uint8)
    
    In [14]: newvals = np.array([127,64,100])
        ...: mask = (hsv[:,:,0] < 20) | (hsv[:,:,2]> 200)
        ...: hsv.reshape(-1,3)[mask.ravel()] = newvals
    
    In [15]: hsv
    Out[15]: 
    array([[[127,  64, 100],
            [200,  52, 185],
            [127,  64, 100],
            [188, 149, 117]],
    
           [[145, 169, 116],
            [146, 134, 108],
            [ 74,  34, 121],
            [127,  64, 100]],
    
           [[127,  64, 100],
            [140, 158, 124],
            [127,  64, 100],
            [ 79, 166, 131]]], dtype=uint8)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-06
      • 2020-08-31
      • 1970-01-01
      • 1970-01-01
      • 2018-04-20
      • 2018-09-28
      相关资源
      最近更新 更多