Как сделать Pycimg работоспособным для тензорного потока в виде PIL? - PullRequest
0 голосов
/ 04 мая 2020

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

Идея состоит в том, чтобы удалить фоновые тени с изображения путем вычитания самого размытого изображения следующим образом.

С pycimg вычитание успешно, но не может сохранить (???) с PIL, результат не удовлетворяет.

Довольно запутался и застрял здесь. Пожалуйста, помогите.

исходное изображение

original image

целевое изображение (сделано pycimg)

target image

размытое изображение

blured image

изображение сделано PIL

image process by PIL


    from  pycimg  import  CImg  as  cimg
    from  tensorflow.keras.preprocessing.image  import  load_img,  img_to_array
    from  PIL  import  ImageFilter,  Image
    import  numpy  as  np

    #  %%  cimg  method
    img  =  cimg(r'bird.png')
    img_copy  =  cimg(r'bird.png')

    img.show()

    #  making  blured  image
    img_blur  =  cimg.blur(img_copy,  sigma=15)
    #  if  use  `img`  directly,  the  cimg.blur  changes  the  original  image  also,  that  makes  everything  black,  so  have  to  make  a  copy.

    img_diff  =  img.__sub__(img_blur)
    img_diff.display()

    img_diff.save(r'bird_diff.jpg')  #  this  works
    img_blur.save(r'bird_diff.png')  #  this  also  works
    img_diff.save(r'D:\test\bird_diff.png')  #  fails  and  gives  err  msg  of    `Process  finished  with  exit  code  -1073741819  (0xC0000005)`

Затем я возвращаюсь к PIL, с GaussianBlur, я могу сделать тот же процесс, но результат совершенно другой и бесполезный для меня.


    #  %%
    img_pil  =  load_img(r'bird.png')
    img_pil_blur  =  img_pil.filter(ImageFilter.GaussianBlur(radius=15))

    img_sub  =  np.asarray(img_pil)  -  np.asarray(img_pil_blur)
    img_sub_arr  =  Image.fromarray(img_sub)
    img_sub_arr.show()

А вот и несколько квестов.

  1. Как я могу получить такой же результат с помощью PIL, как это делает pycimg? по-видимому, для tenorflow взять PIL по умолчанию, не знаю, работает ли он с pycimg.

  2. , если PIL не работает, как я могу изменить формат pycimg на формат PIL? формат совсем другой. пробовал reshape & move.axis.

Большое спасибо.

...