


import numpy as np
from PIL import Image

def        lowerCAmelCase__ (			a__:		np.ndarray			,  a__:		int			,  a__:		int       )  ->		np.ndarray:


							'''simple docstring'''





							_UpperCAmelCase 		=			np.array(_A       )
							if arr.shape[0] != arr.shape[1]:
														raise ValueError('The input array is not a square matrix'       )
							_UpperCAmelCase 		=			0
							_UpperCAmelCase 		=			0
							_UpperCAmelCase 		=			0
							_UpperCAmelCase 		=			0

							# compute the shape of the output matrix
							_UpperCAmelCase 		=			(arr.shape[0] - size) // stride + 1
							# initialize the output matrix with zeros of shape maxpool_shape
							_UpperCAmelCase 		=			np.zeros((maxpool_shape, maxpool_shape)       )

							while i < arr.shape[0]:
														if i + size > arr.shape[0]:
																					# if the end of the matrix is reached, break
																					break
														while j < arr.shape[1]:
																					# if the end of the matrix is reached, break
																					if j + size > arr.shape[1]:
																												break
																					# compute the maximum of the pooling matrix
																					_UpperCAmelCase 		=			np.max(arr[i : i + size, j : j + size]       )
																					# shift the pooling matrix by stride of column pixels
																					j += stride
																					mat_j += 1

														# shift the pooling matrix by stride of row pixels
														i += stride
														mat_i += 1

														# reset the column index to 0
														_UpperCAmelCase 		=			0
														_UpperCAmelCase 		=			0

							return updated_arr

def        lowerCAmelCase__ (			a__:		np.ndarray			,  a__:		int			,  a__:		int       )  ->		np.ndarray:


							'''simple docstring'''





							_UpperCAmelCase 		=			np.array(_A       )
							if arr.shape[0] != arr.shape[1]:
														raise ValueError('The input array is not a square matrix'       )
							_UpperCAmelCase 		=			0
							_UpperCAmelCase 		=			0
							_UpperCAmelCase 		=			0
							_UpperCAmelCase 		=			0

							# compute the shape of the output matrix
							_UpperCAmelCase 		=			(arr.shape[0] - size) // stride + 1
							# initialize the output matrix with zeros of shape avgpool_shape
							_UpperCAmelCase 		=			np.zeros((avgpool_shape, avgpool_shape)       )

							while i < arr.shape[0]:
														# if the end of the matrix is reached, break
														if i + size > arr.shape[0]:
																					break
														while j < arr.shape[1]:
																					# if the end of the matrix is reached, break
																					if j + size > arr.shape[1]:
																												break
																					# compute the average of the pooling matrix
																					_UpperCAmelCase 		=			int(np.average(arr[i : i + size, j : j + size]       )       )
																					# shift the pooling matrix by stride of column pixels
																					j += stride
																					mat_j += 1

														# shift the pooling matrix by stride of row pixels
														i += stride
														mat_i += 1
														# reset the column index to 0
														_UpperCAmelCase 		=			0
														_UpperCAmelCase 		=			0

							return updated_arr


# Main Function
if __name__ == "__main__":
		from doctest import testmod

		testmod(name='''avgpooling''', verbose=True)

		# Loading the image
		lowerCAmelCase__  :Union[str, Any]   			=							Image.open('''path_to_image''')

		# Converting the image to numpy array and maxpooling, displaying the result
		# Ensure that the image is a square matrix

		Image.fromarray(maxpooling(np.array(image), size=3, stride=2)).show()

		# Converting the image to numpy array and averagepooling, displaying the result
		# Ensure that the image is a square matrix

		Image.fromarray(avgpooling(np.array(image), size=3, stride=2)).show()

'''simple docstring'''




import warnings

from ...utils import logging
from .image_processing_deformable_detr import DeformableDetrImageProcessor


__lowercase          =  logging.get_logger(__name__)






class 				a__(					lowerCAmelCase__	):


			'''simple docstring'''






			def __init__(   self       ,    *__lowerCAmelCase       ,    **__lowerCAmelCase):




					"""simple docstring"""


					warnings.warn(
					    """The class DeformableDetrFeatureExtractor is deprecated and will be removed in version 5 of Transformers."""
					    """ Please use DeformableDetrImageProcessor instead."""       ,    __lowerCAmelCase       ,    )
					super().__init__(*__lowerCAmelCase       ,    **__lowerCAmelCase)




