Cardiff have completed the signing of Fraizer Campbell from Sunderland on a three-and-a-half-year deal.