使用蒙版裁剪图像

时间:2016-08-22 15:08:44

标签: python python-2.7 numpy masked-array

我有一个像素数组为[7981,7891]的图像。我通过插值为每个像素分配了一个lat lon坐标。现在我想尝试剪切图像的方形部分,以便我的其余代码仅适用于这个小部分。这是我屏蔽的尝试:

def ostiamask(lat,lon): # lat and lon inputs are both 2d-arrays #

    ost_lat_max = 55.05 
    ost_lat_min = 55.00
    ost_lon_max = -0.95
    ost_lon_min = -1.00

    lat = np.ma.array(lat)
    for i in lat:
        lat = np.ma.masked_outside(lat,i >= ost_lat_max, i <= ost_lat_min)  

    lon = np.ma.array(lon)
    for i in lon:
        lon = np.ma.masked_outside(lon,i >= ost_lon_max, i <= ost_lon_min)  


    lat_mask = np.ma.getmask(lat)
    lon_mask = np.ma.getmask(lon)
    lat_mask = np.array(lat_mask, dtype=int)  
    lon_mask = np.array(lon_mask, dtype=int) 
    pixel_coverage = np.logical_not(lat_mask) * np.logical_not(lon_mask) 

    print 'pixel mask sum',  np.sum(pixel_coverage)    
    print 'pixel mask shape', ostia_pixel_coverage.shape #debugging purposes#

    return pixel_coverage

我收到此错误:

  

ValueError:具有多个元素的数组的真值是不明确的。使用a.any()或a.all()

我也尝试使用np.ma.mask_where(),但无论我尝试了什么,我都会获得[7981,7891]像素的掩码大小。知道我哪里出错了,为什么我的面具不起作用? 需要更多信息让我知道!

0 个答案:

没有答案