Eight were still listed in critical condition late Wednesday.
It was Canada's second major rail accident in less than three months. A runaway oil train derailed and exploded in a Quebec town on July 6, killing 47 people in the country's worst rail disaster in more than a century.
Tanner Trepanier said he and other passengers could see the four-car train bearing down on them as the bus approached the crossing.
"People started screaming, 'Stop! Stop!' because they could see the train coming down the track," Trepanier said.
But the driver didn't slow down, said Rebecca Guilbeault, who was on the bus with her 1-year-old son.
"I don't know if the bus driver blacked out," she said. "I've seen a few people dead, someone ripped in half."
Another passenger, Gregory Mech, said the train crossing has about a 90-degree bend and he didn't think the driver saw that the signals were flashing and the barrier was down.
"The bus actually hit the train dead on," Mech told the Canadian Broadcasting Corp. "I could see that there were bodies on the train tracks. It was horrible."
Passenger Romi Gupta, a 40-year-old office worker headed to her job in downtown Ottawa, boarded what she called the "overfull" bus at its last stop before the crash.
"The driver was OK. I got in a minute before and I said hello to him and he was fine," said Gupta. Moments later, she looked out the window and saw the train headed straight for the bus.
"The bus was too fast; he could not put the brakes on," she said. "It was crazy. People were flying. I saw limbs."
Transit union president Craig Watson confirmed the driver was killed. He did not identify the driver but said he was in his early 40s and had been with the bus company for about 10 years.