Go to Lake Ilinalta and find a spot where the salmon are swimming around in clear view. Then shoot them with an arrow, or use FUS RO DAH and you'll get both meat and roe.
Only the salmon jumping up waterfalls yield roe when you catch them. I've heard they yield roe too if you kill them before looting their corpse (never tested this yet though). Regular swimming and hanging salmon don't give roe if you just click 'E' on them.
Leaping Salmon do drop roe and meat if killed and interestingly enough the third word of Kyne's Peace kills them. It's a good way to harvest a decent amount of them in one go.
^This^ Works all the time. Works in the hatchery too.
But they do give roe if you shoot or Shout them, then click 'E' on them. I've done it many times. (Just the swimming ones, not the hanging ones.)