

from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available, is_vision_available


snake_case_    						=				{
    '''configuration_donut_swin''': ['''DONUT_SWIN_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''DonutSwinConfig'''],
    '''processing_donut''': ['''DonutProcessor'''],
}

try:
       if not is_torch_available():
              raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
       pass
else:
       snake_case_    						=				[
           '''DONUT_SWIN_PRETRAINED_MODEL_ARCHIVE_LIST''',
           '''DonutSwinModel''',
           '''DonutSwinPreTrainedModel''',
       ]

try:
       if not is_vision_available():
              raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
       pass
else:
       snake_case_    						=				['''DonutFeatureExtractor''']
       snake_case_    						=				['''DonutImageProcessor''']


if TYPE_CHECKING:
       from .configuration_donut_swin import DONUT_SWIN_PRETRAINED_CONFIG_ARCHIVE_MAP, DonutSwinConfig
       from .processing_donut import DonutProcessor

       try:
              if not is_torch_available():
                     raise OptionalDependencyNotAvailable()
       except OptionalDependencyNotAvailable:
              pass
       else:
              from .modeling_donut_swin import (
                  DONUT_SWIN_PRETRAINED_MODEL_ARCHIVE_LIST,
                  DonutSwinModel,
                  DonutSwinPreTrainedModel,
              )

       try:
              if not is_vision_available():
                     raise OptionalDependencyNotAvailable()
       except OptionalDependencyNotAvailable:
              pass
       else:
              from .feature_extraction_donut import DonutFeatureExtractor
              from .image_processing_donut import DonutImageProcessor

else:
       import sys

       snake_case_    						=				_LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)




from cva import destroyAllWindows, imread, imshow, waitKey

def 			snake_case__    (					SCREAMING_SNAKE_CASE_	:					int			,  SCREAMING_SNAKE_CASE_	:					int    ):



     '''simple docstring'''





     lowercase__   ,				lowercase__					:     Optional[int]   = img.shape[0], img.shape[1]

     def to_grayscale(SCREAMING_SNAKE_CASE_	:					Union[str, Any]			,  SCREAMING_SNAKE_CASE_	:					List[Any]			,  SCREAMING_SNAKE_CASE_	:					Union[str, Any]    ):
          return 0.2126 * red + 0.587 * green + 0.114 * blue

     def normalize(SCREAMING_SNAKE_CASE_	:					int    ):
          return min(SCREAMING_SNAKE_CASE_			,  255    )

     for i in range(SCREAMING_SNAKE_CASE_    ):
          for j in range(SCREAMING_SNAKE_CASE_    ):
               lowercase__					:     str   = int(to_grayscale(*img[i][j]    )    )
               lowercase__					:     Dict   = [
                   normalize(SCREAMING_SNAKE_CASE_    ),
                   normalize(greyscale + factor    ),
                   normalize(greyscale + 2 * factor    ),
               ]

     return img


if __name__ == "__main__":
       # read original image
       snake_case_    						=				{
           percentage: imread('''image_data/lena.jpg''', 1) for percentage in (10, 20, 30, 40)
       }

       for percentage, img in images.items():
              make_sepia(img, percentage)

       for percentage, img in images.items():
              imshow(F'''Original image with sepia (factor: {percentage})''', img)

       waitKey(0)
       destroyAllWindows()

