'numpy.ndarray' object has no attribute 'raster_geometry_mask'

33 Views Asked by At

I have images and their mask for image segmentation. First time when I run this code it didn't give me such error but now it gives an error even though I restarted and tried again doesn't work. How can I solve this problem. Here is the code and it's error.:

def read_vector_file(shp_path: str) -> gpd.GeoDataFrame:

    return gpd.read_file(shp_path, mode='r')

def convert_vector_to_array(vectorfile: gpd.GeoDataFrame) -> np.ndarray:
    
    return np.array(vectorfile["geometry"].values)

def mask_raster(raster: rasterio.io.DatasetReader, geometry_objects: np.ndarray) -> Tuple[Any, Any]:
    return mask.raster_geometry_mask(raster, geometry_objects, invert=True) 
image_dataset = []
mask_dataset = []
for img, msk in zip(tif_files,shp_files):
  with rasterio.open(img, "r") as src:
    image = src.read([1, 2, 3]).transpose([1,2,0])
    raster_meta = src.meta


  images = tf.expand_dims(image, 0)
  image_patches = tf.image.extract_patches(images=images,
                                        sizes=[1, 128, 128, 1],
                                        strides=[1, 128, 128, 1],
                                        rates=[1, 1, 1, 1],
                                        padding='SAME')
  patched_img = tf.reshape(image_patches, shape=(image_patches.shape[1]*image_patches.shape[2], 128, 128, 3)).numpy().astype("uint8")
  image_dataset.append(patched_img)

  vector_file = read_vector_file(msk)
  geometry_objects = convert_vector_to_array(vector_file)
  binary_mask, _, _ = mask_raster(src, geometry_objects)
  mask = cv2.cvtColor(np.array(binary_mask, dtype=np.uint8), cv2.COLOR_GRAY2RGB)
  masks = tf.expand_dims(mask, 0)
  mask_patches = tf.image.extract_patches(images=masks,
                                        sizes=[1, 128, 128, 1],
                                        strides=[1, 128, 128, 1],
                                        rates=[1, 1, 1, 1],
                                        padding='SAME')
  patched_msk = tf.reshape(mask_patches, shape=(mask_patches.shape[1]*mask_patches.shape[2], 128, 128, 3)).numpy().astype("uint8")
  mask_dataset.append(patched_msk) 

And here is an error:

AttributeError                            Traceback (most recent call last)
<ipython-input-10-28316498d778> in <cell line: 3>()
     18   vector_file = read_vector_file(msk)
     19   geometry_objects = convert_vector_to_array(vector_file)
---> 20   binary_mask, _, _ = mask_raster(src, geometry_objects)
     21   mask = cv2.cvtColor(np.array(binary_mask, dtype=np.uint8), cv2.COLOR_GRAY2RGB)
     22   masks = tf.expand_dims(mask, 0)

<ipython-input-9-cdecdf22a465> in mask_raster(raster, geometry_objects)
     33 
     34     """
---> 35     return mask.raster_geometry_mask(raster, geometry_objects, invert=True)

AttributeError: 'numpy.ndarray' object has no attribute 'raster_geometry_mask'
0

There are 0 best solutions below