Vehicle Classification (VC) is a key element of Intelligent Transportation Systems (ITS). Diverse ranges of ITS applications like security systems, surveillance frameworks, fleet monitoring, traffic safety, and automated parking are using VC. Basically, in the current VC methods, vehicles are classified locally as a vehicle passes through a monitoring area, by fixed sensors or using a compound method. This paper presents a pervasive study on the state of the art of VC methods. We introduce a detailed VC taxonomy and explore the different kinds of traffic information that can be extracted via each method. Subsequently, traditional and cutting edge VC systems are investigated from different aspects. Specifically, strengths and shortcomings of the existing VC methods are discussed and real-time alternatives like Vehicular Ad-hoc Networks (VANETs) are investigated to convey physical as well as kinematic characteristics of the vehicles. Finally, we review a broad range of soft computing solutions involved in VC in the context of machine learning, neural networks, miscellaneous features, models and other methods.