segment-geospatial
segment-geospatial copied to clipboard
Exception: 'NoneType' object has no attribute 'crop'
I am trying to implement FastSAM in a for loop. I have a couple of bboxes in a list like below:
bbox[4:7]
[[58.925381, 31.177402, 58.940381, 31.167402],
[58.940381, 31.167402, 58.955381, 31.157402],
[58.955381, 31.157402, 58.970381, 31.147402]]
in each loop I want to have a segmentation. every things is OK until the sixth loop which I get the Exception: 'NoneType' object has no attribute 'crop' error message for the tms_to_geotiff function. how can I solve this issue?
BTW here is my for loop code:
for j in range(len(bbox)):
tms_to_geotiff(output='Image.tif', bbox=bbox[j], zoom=19, source="Satellite", overwrite=True)
sam.set_image('Image.tif')
output_mask_name = 'mask_'+str(j)+'.tif'
sam.everything_prompt(output=output_mask_name)
output_geojson_name = 'mask_'+str(j)+'.geojson'
sam.raster_to_vector(output_mask_name, output_geojson_name)
In addition to the for loop, sometimes when I want to segment objects according to the FastSAM notebook, I get this error.
Please provide complete source code for debugging.
Please provide complete source code for debugging.
%pip install segment-geospatial segment-anything-fast
import leafmap
from samgeo import tms_to_geotiff
from samgeo.fast_sam import SamGeo
m = leafmap.Map(center=[27.371051, 62.359569], zoom=16, height="800px")
m.add_basemap("SATELLITE")
m
import numpy as np
x_range = np.arange(58.865381, 63.425381, 0.015)
y_range = np.arange(31.217403, 24.967403, -0.01)
x = x_range.tolist()
y = y_range.tolist()
bbox = []
for i in range(len(x)-1):
for j in range(len(y)-1):
box = [x[i], y[i], x[i+1], y[i+1]]
bbox.append(box)
from samgeo.fast_sam import SamGeo
sam = SamGeo(model="FastSAM-x.pt")
for k in range(len(bbox)):
tms_to_geotiff(output='Image.tif', bbox=bbox[k], zoom=16, source="Satellite", overwrite=True)
sam.set_image('Image.tif')
output_mask_name = 'mask_'+str(k)+'.tif'
sam.everything_prompt(output=output_mask_name)
output_geojson_name = 'mask_'+str(k)+'.geojson'
sam.raster_to_vector(output_mask_name, output_geojson_name)
I got the same issue. Did you manage to fix it?
unfortunately not!
You guys found any solution ?
It's because the bounding box needed is not in the same form as expected. The x and y need to be switched!