In 1828, Cameron became a merchant in the Perth area. The year before, he had set up a general store at Port Sarnia (later Sarnia) and, in 1837, he moved there. In the same year, he served with Allan Napier MacNab during the Upper Canada Rebellion. He also set up mills in the Port Sarnia area, became involved in transporting goods and established a business cutting and selling timber.
In 1836, he was elected to the 13th Parliament of Upper Canada representing Lanark County as a moderate Reformer. Upon the formation of the Province of Canada by the union of Lower Canada and Upper Canada, he was elected to the first Parliament of the Province of Canada, again representing Lanark. He originally opposed Robert Baldwin, he supported his government in 1842 and was given the post of inspector of revenue. He resigned in 1843 because he could not support the government bill that moved the capital to Montreal. He continued to represent Lanark in the Legislative Assembly until 1847.
In 1847, he was elected in Kent and, in 1848, was chosen to be assistant commissioner of public works, resigning in 1849. Cameron began to align himself with the Clear Grits. He pressed for the abolition of the clergy reserves and pushed for reciprocity in trade with the United States. In 1851, he was elected as an independent in Huron. He also supported Arthur Rankin in Kent against George Brown in a bitter campaign, although Brown won easily. He was given a post in the government in 1852 and, in 1853, became appointed Postmaster General. This also meant that he served on the Board of Railway Commissioners and he represented the government on the board of the Grand Trunk Railway. In 1854, Cameron ran in both South Lanark and Lambton, but was elected in neither.
He was elected to the 6th Parliament of the Province of Canada as an independent representing Lambton; he defeated the Reform candidate Hope Fleming Mackenzie, the brother of Alexander Mackenzie. In 1860, he was elected to the Legislative Council for St. Clair division and Hope Mackenzie won the Lambton seat in a by-election.