【发布时间】:2017-08-01 22:31:13
【问题描述】:
我正在将 numpy 数组(使用 OpenCV 加载的网络摄像头镜头)转换为 Tkinter PhotoImage 对象以在 Tkinter GUI 上显示它们。但是,函数PIL.ImageTk.PhotoImage() 经历了大约 800 毫秒的峰值,导致帧速率严重下降。这是sn-p:
ar = Image.fromarray(frame)
itk = ImageTk.PhotoImage(ar) # *
lbl = Label()
lbl.configure(image=itk)
lbl.image = itk
我测量了标有*的行的执行时间:
Number of runs: 72
Total duration: 11.97 seconds
Longest run: 967.05 milliseconds
Shortest run: 1.03 milliseconds
Average run: 166.25 milliseconds
Median run: 1.2 milliseconds
Standard deviation: 315.63 milliseconds
图像的像素数始终相同,我无法生成性能始终较低的条件。
关于如何防止尖峰的任何想法?如果可以预测,跳帧是没有问题的。
PIL 版本 4.0.0 OpenCV 版本 3.0.0 Numpy 版本 1.12.0 Python版本:2.7.12
【问题讨论】:
标签: python opencv numpy tkinter python-imaging-library