pyclickimage.ClickManager#

class pyclickimage.ClickManager(precision_mode: Literal['float', 'int'] = 'float')[source]#

Bases: object

A class to manage user clicks grouped into named categories.

This class stores 2D coordinates of points clicked on an image, grouped by string identifiers. It supports both float (subpixel) and integer precision modes. Points are all the time saved as float but the precision mode apply on output.

add_click(x: int | float | None, y: int | float | None, group_name: str | None = None) None[source]#

Add a click to a group.

Parameters:
  • x (Optional[Number]) – X coordinate of the click.

  • y (Optional[Number]) – Y coordinate of the click.

  • group_name (Optional[str]) – Group name. If None, uses current group. Default is None.

add_group(group_name: str) None[source]#

Add a new group.

Parameters:

group_name (str) – Name of the group to add.

clear_group(group_name: str | None = None) None[source]#

Clear all clicks in a group.

Parameters:

group_name (Optional[str]) – Group name. If None, uses current group. Default is None.

current_group: str#
extract_group(group_name: str | None = None) List[Tuple[int | float | None, int | float | None]][source]#

Extracts the clicks for the specified group.

Parameters:

group_name (Optional[str]) – The name of the group whose clicks are to be extracted. If None, uses the current group. Default is None.

Returns:

A list of tuples with the format (Click X, Click Y) for each click in the group.

Return type:

List[Point]

get_click(index: int, group_name: str | None = None) Tuple[int | float | None, int | float | None][source]#

Get a specific click.

Parameters:
  • index (int) – Index of the click.

  • group_name (Optional[str]) – Group name. If None, uses current group. Default is None.

Returns:

Click coordinates.

Return type:

Tuple[Optional[Number], Optional[Number]]

groups: Dict[str, List[Tuple[int | float | None, int | float | None]]]#
classmethod load_from_csv(path: str, precision_mode: Literal['float', 'int'] = 'float') ClickManager[source]#

Load clicks from CSV.

Parameters:
  • path (str) – Path to CSV file.

  • precision_mode (str) – Precision mode to use (“float” or “int”).

Returns:

Loaded instance.

Return type:

ClickManager

property n_clicks: int#

Return the number of clicks

property precision_mode: str#

Get the current precision mode.

Returns:

Either “float” or “int”.

Return type:

str

remove_click(index: int, group_name: str | None = None) None[source]#

Remove a click by index.

Parameters:
  • index (int) – Index of the click.

  • group_name (Optional[str]) – Group name. If None, uses current group. Default is None.

remove_group(group_name: str | None = None) None[source]#

Remove a group.

Parameters:

group_name (Optional[str]) – Name of the group to remove. If None, uses current group. Default is None.

rename_group(old_name: str, new_name: str) None[source]#

Rename a group.

Parameters:
  • old_name (str) – Existing group name.

  • new_name (str) – New group name.

Raises:

KeyError – If group does not exist or new name already used.

save_to_csv(path: str) None[source]#

Save clicks to CSV.

Parameters:

path (str) – Output file path.

set_group(group_name: str) None[source]#

Set current group.

Parameters:

group_name (str) – Name of the group to activate.

to_dict() dict[source]#

Return internal data as dictionary.

Returns:

Dictionary mapping group names to lists of points. Each point is a tuple (x, y) with values converted using _convert() depending on the current precision mode.

Return type:

dict

to_half_shift_off()[source]#

Reverse the half-pixel shift.

Point (a, b) -> (a + 0.5, b + 0.5)

to_half_shift_on()[source]#

Shift all points by -0.5 to use pixel-centered coordinates.

Point (a, b) -> (a - 0.5, b - 0.5)

property use_float_precision: bool#

True if precision mode is float.

property use_int_precision: bool#

True if precision mode is integer.