

"""simple docstring"""


from string import ascii_uppercase

__A						       =      {str(ord(c) - 55): c for c in ascii_uppercase}






def    a__   (   __SCREAMING_SNAKE_CASE ,			__SCREAMING_SNAKE_CASE			)     ->     str:
		if isinstance(__SCREAMING_SNAKE_CASE ,			__SCREAMING_SNAKE_CASE			):
				raise TypeError("int() can't convert non-string with explicit base"			)
		if num < 0:
				raise ValueError("parameter must be positive int"			)
		if isinstance(__SCREAMING_SNAKE_CASE ,			__SCREAMING_SNAKE_CASE			):
				raise TypeError("'str' object cannot be interpreted as an integer"			)
		if isinstance(__SCREAMING_SNAKE_CASE ,			__SCREAMING_SNAKE_CASE			):
				raise TypeError("'float' object cannot be interpreted as an integer"			)
		if base in (0, 1):
				raise ValueError("base must be >= 2"			)
		if base > 3_6:
				raise ValueError("base must be <= 36"			)
		__lowerCAmelCase:	str   				=      ""
		__lowerCAmelCase:	Dict   				=      0
		__lowerCAmelCase:	Optional[int]   				=      0
		while div != 1:
				__lowerCAmelCase:	int   				=      divmod(__SCREAMING_SNAKE_CASE ,			__SCREAMING_SNAKE_CASE			)
				if base >= 1_1 and 9 < mod < 3_6:
						__lowerCAmelCase:	Any   				=      ALPHABET_VALUES[str(__SCREAMING_SNAKE_CASE			)]
				else:
						__lowerCAmelCase:	List[Any]   				=      str(__SCREAMING_SNAKE_CASE			)
				new_value += actual_value
				__lowerCAmelCase:	Union[str, Any]   				=      num // base
				__lowerCAmelCase:	Optional[Any]   				=      div
				if div == 0:
						return str(new_value[::-1]			)
				elif div == 1:
						new_value += str(__SCREAMING_SNAKE_CASE			)
						return str(new_value[::-1]			)

		return new_value[::-1]


if __name__ == "__main__":
			import doctest

			doctest.testmod()

			for base in range(2, 37):
						for num in range(1000):
									assert int(decimal_to_any(num, base), base) == num, (
									    num,
									    base,
									    decimal_to_any(num, base),
									    int(decimal_to_any(num, base), base),
									)





"""simple docstring"""


from pathlib import Path

import cva
import numpy as np
from matplotlib import pyplot as plt






def    a__   (   __SCREAMING_SNAKE_CASE ,			__SCREAMING_SNAKE_CASE ,			__SCREAMING_SNAKE_CASE ,			__SCREAMING_SNAKE_CASE ,			__SCREAMING_SNAKE_CASE			)     ->     np.ndarray:
		__lowerCAmelCase:	List[Any]   				=      cva.getAffineTransform(__SCREAMING_SNAKE_CASE ,			__SCREAMING_SNAKE_CASE			)
		return cva.warpAffine(__SCREAMING_SNAKE_CASE ,			__SCREAMING_SNAKE_CASE ,			(rows, cols)			)


if __name__ == "__main__":
			# read original image
			__A						       =      cva.imread(
			    str(Path(__file__).resolve().parent.parent / "image_data" / "lena.jpg")
			)
			# turn image in gray scale value
			__A						       =      cva.cvtColor(image, cva.COLOR_BGR2GRAY)
			# get image shape
			__A       ,    __A						       =      gray_img.shape

			# set different points to rotate image
			__A						       =      np.array([[50, 50], [200, 50], [50, 200]], np.floataa)
			__A						       =      np.array([[10, 100], [200, 50], [100, 250]], np.floataa)
			__A						       =      np.array([[50, 50], [150, 50], [120, 200]], np.floataa)
			__A						       =      np.array([[10, 100], [80, 50], [180, 250]], np.floataa)

			# add all rotated images in a list
			__A						       =      [
			    gray_img,
			    get_rotation(gray_img, ptsa, ptsa, img_rows, img_cols),
			    get_rotation(gray_img, ptsa, ptsa, img_rows, img_cols),
			    get_rotation(gray_img, ptsa, ptsa, img_rows, img_cols),
			]

			# plot different image rotations
			__A						       =      plt.figure(1)
			__A						       =      ["Original", "Rotation 1", "Rotation 2", "Rotation 3"]
			for i, image in enumerate(images):
						plt.subplot(2, 2, i + 1), plt.imshow(image, "gray")
						plt.title(titles[i])
						plt.axis("off")
						plt.subplots_adjust(left=0.0, bottom=0.05, right=1.0, top=0.95)
			plt.show()


