Osweiler agreed to leave the Denver Broncos when free agency began, leaving a pending starting job with the Super Bowl champions to become Houston's quarterback.
The Texans were looking to upgrade the position after Brian Hoyer's struggles last season, particularly his turnover-filled performance in their wild-card playoff loss to Kansas City.
Houston also added running back Lamar Miller, center Tony Bergstrom and guard Jeff Allen in free agency, and re-signed tackle Chris Clark, punter Shane Lechler and kicker Nick Novak.
Miller replaces franchise rushing leader Arian Foster, who was released after a series of injuries in recent years.
Osweiler appeared in eight games with seven starts last season for the Broncos. He threw for 1,967 yards and 10 touchdowns with six interceptions last season.
After sitting behind Peyton Manning for more than three years, he started the last seven games of the 2015 regular season, but was benched in favor of Manning for the postseason. The 6-foot-7, 240-pound Osweiler was drafted in the second round in 2012 out of Arizona State.
"It was very difficult," he said of leaving Denver. "I'd be lying to you if I said anything else. I had a tremendous four seasons there in Denver and those are four years that I'll always hold close to my heart. But bottom line coming to Houston was an opportunity that I couldn't pass up."