Setting the midpoint is one way to go about it. However, that would be only in the absence of other information.
For example, if 106-152 has these data in it, 106, 106, 106, 106, 106, 106, 152, then a midpoint might be a terrible representation of the interval.
Anyway, let's use the midpoint. (106+152)/2 = 129
The idea is to use the frequency to assume there are that many entries of your midpoint. In other words, with these data, the value 129 is assumed to be in the detail listing 19 times.
Note: I'm not a fan of these data. Gaps are bad unless you know why they exist. Will you be okay with a mean of 155, knowing that absolutely was not in your original ranges? It's possible that the chart means:
-96-51 - 15
52-105 - 0
106-152 - 19
153-211 - 0
212-349 - 11
You haven't actually told us that, so I have to wonder about the gaps.