Способы применения эффектов изображения на Python3 в одном окне - PullRequest
0 голосов
/ 16 апреля 2019

Итак, дело в том, что я начал работать с python не так давно и пытаюсь заставить работать некоторый код. По сути, я пытаюсь создать окно, содержащее изображение, и когда нажимаются некоторые кнопки, изображение меняется (размер, размытие и т. Д.). Некоторые проблемы, с которыми я сталкиваюсь, это эффект размытия один раз и эффект изменения размера, создающий другое изображение выше большего / меньшего, и последнее не удаляется. Есть ли способ заставить все это работать? Заранее спасибо. Возможно, я использовал слишком много строк кода, я полностью осознаю это, поскольку мне все еще не хватает знаний:).

import tkinter
import cv2
import PIL.Image, PIL.ImageTk

def blur_image():
    print("Blur")
    global photo_blur
    global cv_img_blur

    cv_img_blur = cv2.blur(cv_img, (3, 3))
    photo_blur = PIL.ImageTk.PhotoImage(image = PIL.Image.fromarray(cv_img_blur))
canvas.create_image(0, 0, image=photo_blur, anchor=tkinter.NW)

def reduce_image():
    print("Reduced")
    global photo_reduce
    global cv_img_reduce

cv_img_reduce = cv2.resize(cv_img, (0,0), fx=0.5, fy=0.5, interpolation=cv2.INTER_AREA)
photo_reduce = PIL.ImageTk.PhotoImage(image = PIL.Image.fromarray(cv_img_reduce))
canvas.create_image(0, 0, image=photo_reduce, anchor=tkinter.NW)

window = tkinter.Tk()
window.title("Project")

cv_img = cv2.cvtColor(cv2.imread("hqdefault.jpg"), cv2.COLOR_BGR2RGB)

height, width, no_channels = cv_img.shape

canvas = tkinter.Canvas(window, width = width, height = height)
canvas.pack()

photo = PIL.ImageTk.PhotoImage(image = PIL.Image.fromarray(cv_img))

canvas.create_image(0, 0, image=photo, anchor=tkinter.NW)

btn_blur=tkinter.Button(window, text="Blur", width=50, command=blur_image)
btn_blur.pack(anchor=tkinter.CENTER, expand=True)

btn_reduce=tkinter.Button(window, text="Reduce", width=50, command=reduce_image)
btn_reduce.pack(anchor=tkinter.CENTER, expand=True)

window.mainloop()

1 Ответ

0 голосов
/ 16 апреля 2019

Попробуйте что-то вроде этого

import tkinter
import cv2
import PIL.Image, PIL.ImageTk

blur_status = (3, 3)

def blur_image():

    print("Blur")
    global photo_blur, cv_img_blur, image, blur_status

    cv_img_blur = cv2.blur(cv_img, blur_status)
    photo_blur = PIL.ImageTk.PhotoImage(image = PIL.Image.fromarray(cv_img_blur))
    canvas.delete(image)
    image = canvas.create_image(0, 0, image=photo_blur, anchor=tkinter.NW)

    n1, n2 = blur_status
    blur_status = (n1 + 1, n2 + 2)


def reduce_image():

    print("Reduced")
    global photo_reduce, cv_img_reduce, image

    cv_img_reduce = cv2.resize(cv_img, (0,0), fx=0.5, fy=0.5, interpolation=cv2.INTER_AREA)
    photo_reduce = PIL.ImageTk.PhotoImage(image = PIL.Image.fromarray(cv_img_reduce))
    canvas.delete(image)
    image = canvas.create_image(0, 0, image=photo_reduce, anchor=tkinter.NW)


window = tkinter.Tk()
window.title("Project")

cv_img = cv2.cvtColor(cv2.imread("home.png"), cv2.COLOR_BGR2RGB)

height, width, no_channels = cv_img.shape

canvas = tkinter.Canvas(window, width = width, height = height)
canvas.pack()

photo = PIL.ImageTk.PhotoImage(image = PIL.Image.fromarray(cv_img))

image = canvas.create_image(0, 0, image=photo, anchor=tkinter.NW)

btn_blur = tkinter.Button(window, text="Blur", width=50, command=blur_image)
btn_blur.pack(anchor=tkinter.CENTER, expand=True)

btn_reduce = tkinter.Button(window, text="Reduce", width=50, command=reduce_image)
btn_reduce.pack(anchor=tkinter.CENTER, expand=True)

window.mainloop()

В реальном времени, в том числе и в том, что касается музыки, и музыки, и творчества, и творчества, и творчества, и творчества, и творчества, и творчества, и творчества.устранить quella vecchia.Сфокатура сембрава соло прима вольта перче и валори не аументавано перче эрано сэмпер импостати су (3, 3), в котором говорится, что каждый раз, когда вы вызываете функцию

...