import numpy as np

def divide_image(image, num_vertical_divides, num_horizontal_divides):
  """
  Divides a white-black image into subimages based on the number of vertical and horizontal divides.

  Args:
    image: A numpy array representing the white-black image.
    num_vertical_divides: The number of vertical divides.
    num_horizontal_divides: The number of horizontal divides.

  Returns:
    A list of tuples, where each tuple represents a cutting line with its start and end points.
  """

  height, width = image.shape

  vertical_lines = []
  horizontal_lines = []

  # Calculate vertical cutting lines
  for i in range(1, num_vertical_divides + 1):
    x = int(width * (i / (num_vertical_divides + 1)))
    vertical_lines.append(((x, 0), (x, height - 1)))

  # Calculate horizontal cutting lines
  for i in range(1, num_horizontal_divides + 1):
    y = int(height * (i / (num_horizontal_divides + 1)))
    horizontal_lines.append(((0, y), (width - 1, y)))

  return vertical_lines + horizontal_lines

# Example usage:
# Assuming you have a 256x256 image and want to divide it into 4x4 grid (3 vertical and 3 horizontal divides)
image = np.zeros((256, 256))  # Example black image
cutting_lines = divide_image(image, 3, 3)

# Print the start and end points of each cutting line
for line in cutting_lines:
  print(f"Start: {line[0]}, End: {line[1]}") 