Google Summer of Code: Final phase Developing GUI and testing.

The main algorithms were ready. But it was not in the form to be distributed to a normal user. So, the next challenge was to be able to build a Graphical user interface (GUI) for the software for easy usage.

The GUI was built in PyQt4 which is python wrappers for Qt GUI builder. It is cross platform GUI works well keeping in mind the future aspects of the software.

The first screen contains a load button — which launches a load file dialog box. The selected file is loaded.

The Generate graph button starts the process of highlights extraction. The logger Text box shows that the algorithm is running.

Log text

Currently the progress bar can be seen in the terminal only. This bar shows the processes updates. I will attempt to include this progress bar in the Main GUI in the next micro version of the software.

progress bar in the terminal

It takes around ~10mins to process an hour long video. The generated graph is marked with the positions where highlights were found. The time of highlight is printed in the log text box.

Highlight points

The graph and the Summary.mp4 file is stored in a new folder named similar to the video input file.


The Software was tested on handful of soccer matches. It is able to include in highlights all goals and also some very exciting moments like fouls or a close attempts towards goal.

One thing to be noted is that it analyses the pre-game excitement (the cheer, lot of camera movements etc) as highlights and includes them in the summary of the match.

Also, the excitement trend curve is a reference curve and it will be generated for any sport. Thus apart from soccer, the software accurately determines the excitement trend for sports like Rugby and hockey.

Games like cricket, tennis, basketball tend to be a bit monotonous for this software. Thus it does not provide very good insights of these and similar sports.

And for Streams recorded from television/ internet which include advertisements (commercials) , it gives absurd results maybe due to ads generally contain high motion and cut density. Thus a TV stream (which has Ads) needs to be passed through a Ad removal software like this.


The Final phase taught me a lot of things:

  1. PyQt from scratch and was able to produce a decent GUI out of it
  2. The art of proper documentation of code.
  3. pep8 and its importance.
  4. How to package a software.