Использование PIL для анализа видео кадр за кадром - PullRequest
2 голосов
/ 22 марта 2012

Я работаю над использованием PIL для усреднения интенсивности пикселей по подрайону видео. Что я хочу сделать, это:

-Используйте ffmpeg, чтобы превратить видео в несколько кадров
-Используйте PIL, чтобы выбрать окно в каждом кадре (это шаг, с которым мне нужна помощь)
- Выполните некоторый анализ этого окна в каждом кадре и агрегируйте данные (например, средний цвет по времени)

Я в растерянности относительно того, как сделать средний шаг - у кого-нибудь есть предложения?

1 Ответ

0 голосов
/ 24 марта 2012

Нашел решение с помощью Tkinter:

import Tkinter
import Image, ImageDraw, ImageTk

window = Tkinter.Tk()
window.title('Calcium Imaging Software')

mouse_X = 0
mouse_Y = 0
ellipseBox = []
listOfCircles = []

#stuff to set up the image
image = Image.open("test.jpg")
draw = ImageDraw.Draw(image)
canvas = Tkinter.Canvas(window, width=image.size[0], height=image.size[1])
canvas.pack()
image_tk = ImageTk.PhotoImage(image)
canvas.create_image(image.size[0]//2, image.size[1]//2, image=image_tk)

#define a function to be run on the mouseclick
def drawEllipse(event):
    global ellipseBox
    print "clicked at: ", event.x, event.y
    mouse_X = event.x
    mouse_Y = event.y
    ellipseBox.append((mouse_X,mouse_Y))
    print "box corners: ",ellipseBox
    #When two corners are selected, draw the ellipse
    if len(ellipseBox) == 2:
        draw.ellipse(ellipseBox,outline=(255,255,255))
        listOfCircles.append(tuple(ellipseBox))
        ellipseBox = []
        window.update()
#bind mouse click to drawing an ellipse
canvas.bind("<Button-1>", drawEllipse)
Tkinter.mainloop()

И это делает почти все, что я хочу!Тем не менее, я не могу получить эллипсы, чтобы показать на изображении - какие-либо предложения?

...