"""simple docstring"""




def 				_UpperCAmelCase		(							lowerCamelCase__      ,	lowerCamelCase__ = False  ):





		"""simple docstring"""




		if not isinstance(lowerCamelCase__      ,	lowerCamelCase__  ):
				lowerCAmelCase__   = f"""Expected string as input, found {type(lowerCamelCase__  )}"""
				raise ValueError(lowerCamelCase__  )
		if not isinstance(lowerCamelCase__      ,	lowerCamelCase__  ):
				lowerCAmelCase__   = f"""Expected boolean as use_pascal parameter, found {type(lowerCamelCase__  )}"""
				raise ValueError(lowerCamelCase__  )

		lowerCAmelCase__   = input_str.split("""_"""  )

		lowerCAmelCase__   = 0 if use_pascal else 1

		lowerCAmelCase__   = words[start_index:]

		lowerCAmelCase__   = [word[0].upper() + word[1:] for word in words_to_capitalize]

		lowerCAmelCase__   = """""" if use_pascal else words[0]

		return "".join([initial_word, *capitalized_words]  )


if __name__ == "__main__":
			from doctest import testmod

			testmod()





"""simple docstring"""




import numpy as np
from cva import COLOR_BGR2GRAY, CV_8UC3, cvtColor, filteraD, imread, imshow, waitKey







def 				_UpperCAmelCase		(							lowerCamelCase__      ,	lowerCamelCase__      ,	lowerCamelCase__      ,	lowerCamelCase__      ,	lowerCamelCase__      ,	lowerCamelCase__  ):





		"""simple docstring"""




		if (ksize % 2) == 0:
				lowerCAmelCase__   = ksize + 1
		lowerCAmelCase__   = np.zeros((ksize, ksize)      ,	dtype=np.floataa  )

		# each value
		for y in range(lowerCamelCase__  ):
				for x in range(lowerCamelCase__  ):
						# distance from center
						lowerCAmelCase__   = x - ksize // 2
						lowerCAmelCase__   = y - ksize // 2

						# degree to radiant
						lowerCAmelCase__   = theta / 180 * np.pi
						lowerCAmelCase__   = np.cos(_theta  )
						lowerCAmelCase__   = np.sin(_theta  )

						# get kernel x
						lowerCAmelCase__   = cos_theta * px + sin_theta * py

						# get kernel y
						lowerCAmelCase__   = -sin_theta * px + cos_theta * py

						# fill kernel
						lowerCAmelCase__   = np.exp(
						    -(_x**2 + gamma**2 * _y**2) / (2 * sigma**2)  ) * np.cos(2 * np.pi * _x / lambd + psi  )

		return gabor


if __name__ == "__main__":
			import doctest

			doctest.testmod()
			# read original image
			__lowerCAmelCase     :				Tuple    				=    imread("../image_data/lena.jpg")
			# turn image in gray scale value
			__lowerCAmelCase     :				List[str]    				=    cvtColor(img, COLOR_BGR2GRAY)

			# Apply multiple Kernel to detect edges
			__lowerCAmelCase     :				Union[str, Any]    				=    np.zeros(gray.shape[:2])
			for theta in [0, 30, 60, 90, 1_20, 1_50]:
						__lowerCAmelCase     :				Union[str, Any]    				=    gabor_filter_kernel(10, 8, theta, 10, 0, 0)
						out += filteraD(gray, CV_8UC3, kernel_aa)
			__lowerCAmelCase     :				Optional[int]    				=    out / out.max() * 2_55
			__lowerCAmelCase     :				Tuple    				=    out.astype(np.uinta)

			imshow("Original", gray)
			imshow("Gabor filter with 20x20 mask and 6 directions", out)

			waitKey(0)




