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'