Как обменять случайные пиксели на изображении в Python? - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь написать программу, которая случайным образом обменивает пиксели на изображении, чтобы сделать его совершенно новым. Я генерирую два набора случайных значений для строки и столбца, а затем хочу обменять эти пиксели изображения.

Но по какой-то причине мой код просто не выполняет то, что я хочу. Изображение выглядит относительно похожим на исходное изображение, но выглядит немного размытым.

Я хочу, чтобы конечным результатом было то же изображение, но с некоторыми (или всеми) пикселями, случайно расположенными в другом месте.

     def get_pixel(image, i, j):
     # Inside image bounds?
       width, height = image.size
       if i > width or j > height:
       return None

     # Get Pixel
       pixel = image.getpixel((i, j))
       return pixel

     from PIL import Image
     from argparse import ArgumentParser
     import random as r

     parser = ArgumentParser()

     parser.add_argument("-p",dest="picture",  
                help="write the name of the photo with the file type") 

     args= parser.parse_args()

      image = Image.open(args.picture)

     # Get size
     width, height = image.size

     pixels = image.load()

      ran1 = r.randint(0, width-1)
      ran2 = r.randint(0, height-1)

     for i in range(ran1):
        for j in range(ran2):
         # Get Pixel
         rand1 = r.randint(0, width-1)
         rand2 = r.randint(0, height-1)

         rand3 = r.randint(0, width-1)
         rand4 = r.randint(0, height-1)

         pixel = get_pixel(image, rand1, rand2)
         pixel2 = get_pixel(image, rand3, rand4)

        # Set Pixel in new image
         pixels[rand1, rand2] = (pixel2[0], pixel2[1],pixel2[2])
         pixels[rand3, rand4] = (pixel[0], pixel[1],pixel[2])

        # Return new image
  image.save('lol.png', 'png')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...