Police said 16 people sustained injuries but were not in critical condition.
The train was heading towards the capital with 131 passengers when it hit what could have been tarpaulin or something else from the freight train on the tracks, said Banedanmark, which maintains and controls rail network traffic.
A preliminary investigation by the Danish Accident Investigation Board showed a trailer had blown off a freight wagon onto the oncoming tracks, a spokesman said.
Police said it was too early to say what caused the accident but the train was damaged by goods on the tracks.
“There was a very, very loud bang and then the train stopped,” a witness who had been onboard the train with his daughter told broadcaster TV2.
The accident happened shortly before 7.35 a.m. (0635 GMT), police said in a statement, adding that police and emergency workers were at the scene.
A Carlsberg spokesman said a freight train operated by DB Cargo, the logistics arm of the German railway company Deutsche Bahn DBN.UL, carrying goods for Carlsberg between its Fredericia brewery and Copenhagen, had been involved in the accident.
A severe storm made it difficult for emergency services to reach the train which had stopped on the Great Belt fixed link between Zealand and Funen, Denmark’s two major islands.
“This morning’s tragic accident on the Great Belt Bridge with many killed and wounded has shaken us all. Ordinary Danes on their way to work or on the way home from Christmas holidays have had their lives shattered,” Danish Prime Minister Lars Lokke Rasmussen said in a tweet.
An emergency center was established in the town of Nyborg at the western end of the bridge. Fatal accidents are rare on the country’s highly developed rail network.
“Terrible train accident on the Great Belt Bridge in Denmark as a result of the storm Alfrida. Our thoughts are with the injured and with the families and relatives of the dead,” Swedish Prime Minister Stefan Löfven said in a tweet.
The bridge was closed for trains while car traffic in both directions had opened again. Train traffic was expected by Banedanmark to resume not earlier than Thursday.
The 18-kilometre long bridge across the Great Belt carries around 21,000 train passengers every day and more than 27,000 vehicles crosses the bridge each day.
The bridge is part of infrastructure that links Denmark and Sweden to Germany.