The idea behind heapq is to share the time spent to sort when you build the array. 

In practice, it is not very convenient to find correct parameters for the HT, especially the accuracy because it depends on how your detected ellipse is ideal. The algo returns a large array of values and you may have to investigate though them. You may need to have a look to the 10 best scores and so on.
The algo may returns ellipses with high scores which are different but very close to each other. I can imagine that the user can do averages or error bars estimations.

There is also the possibility to merge heap arrays with a very low cost.

Another advantage I see with heapq: it is transparent. It's still an array behind and users can ignore heap if they want.


However, I was embarrassed about one point. Heap is very efficient if you pop values. But, as largest accum are relevant here and because pop remove the lowest,  we cannot use directly pop :( Changing the score notation just for that is, I think, misleading. I discovered that when I implemented this stuff. 

If you believe that heap looks too complicated, I can remove this feature and keep an unsorted array. I learned a lot on my side, i didn't wasted my time on it :)