Image
Chitra
dataclass
¶
Ultimate image utility class.
- Load image from file, web url, numpy or bytes
- Plot image
- Draw bounding boxes
Parameters:
Name | Type | Description | Default |
---|---|---|---|
data | Any | numpy, url, filelike | required |
bboxes | Optional[List] | None | |
labels | Optional[List] | None | |
box_format | Optional[str] | 'XYXY' | |
cache[bool] | Whether to cache downloaded image | required |
Source code inchitra/image/image.py
classChitra:"""Ultimate image utility class. 1. Load image from file, web url, numpy or bytes 2. Plot image 3. Draw bounding boxes Args: data: numpy, url, filelike bboxes: labels: box_format: cache[bool]: Whether to cache downloaded image """data:Anybboxes:Optional[BoundingBoxes]=Nonelabels:Optional[List]=Nonedef__init__(self,data:Any,bboxes:Optional[List]=None,labels:Optional[List]=None,box_format:Optional[str]=BoundingBoxes.CORNER,cache:bool=False,)->None:self.image=self._load_image(data,cache=cache)self.bboxes=BoundingBoxes(bboxes,labels,box_format=box_format)@staticmethoddef_load_image(data:DATA_FORMATS,cache:bool):ifisinstance(data,Image.Image):returndataifisinstance(data,bytes):returnImage.open(io.BytesIO(data))ifisinstance(data,str):ifdata.startswith("http"):image=_url_to_image(data,cache)else:image=Image.open(data)elifisinstance(data,np.ndarray):image=Image.fromarray(data)else:raiseUserWarning("unable to load image!")returnimagedefnumpy(self):returnnp.asarray(self.image)@propertydefshape(self):returnself.numpy().shape@propertydefsize(self):returnself.image.sizedefimshow(self,cmap=plt.cm.Blues,**kwargs):plt.imshow(self.numpy(),cmap,**kwargs)defdraw_boxes(self,marker_size:int=2,color=(0,255,0),):ifself.bboxesisNone:raiseUserWarning("bboxes is None")bbox_on_image=self.bboxes.get_bounding_boxes_on_image(self.shape)returnbbox_on_image.draw_on_image(self.numpy()[...,:3],color=color,size=marker_size)defresize(self,*args,**kwargs)->Image.Image:""" Calls PIL.Image.resize method and passes the arguments Args: *args: **kwargs: Returns: resized PIL.Image """self.image=self.image.resize(*args,**kwargs)returnself.imagedefresize_image_with_bbox(self,size:List[int]):"""Resize both image and the bounding boxes"""old_size=self.shapeself.image=self.image.resize(size)self.bboxes.resize_with_image(old_size,self.numpy())returnself.image,self.bboxes
resize(self,*args,**kwargs)
¶
Calls PIL.Image.resize method and passes the arguments
Parameters:
Name | Type | Description | Default |
---|---|---|---|
*args | () | ||
**kwargs | {} |
Returns:
Type | Description |
---|---|
Image | resized PIL.Image |
Source code inchitra/image/image.py
defresize(self,*args,**kwargs)->Image.Image:""" Calls PIL.Image.resize method and passes the arguments Args: *args: **kwargs: Returns: resized PIL.Image """self.image=self.image.resize(*args,**kwargs)returnself.image
resize_image_with_bbox(self,size)
¶
Resize both image and the bounding boxes
Source code inchitra/image/image.py
defresize_image_with_bbox(self,size:List[int]):"""Resize both image and the bounding boxes"""old_size=self.shapeself.image=self.image.resize(size)self.bboxes.resize_with_image(old_size,self.numpy())returnself.image,self.bboxes
Last update:December 5, 2021