7Newswire
26 Jan 2023, 12:22 GMT+10
Introduction
Systems for detecting and counting vehicles are crucial components of a smart transportation system, especially when it comes to traffic control. Roads will be monitored by this vision-based technology, which will then identify and count different types of vehicles.
A Vehicle Detection software seeks to provide details about;
In this article, we'll code a system for counting and detecting vehicles. It will be sufficient to function for both still images and moving pictures. For the same, we'll be using OpenCV for carrying out all image processing operations and for detecting and counting cars and buses using a haar cascade classifier. However, you can also create your own haar cascade classifier.
Prerequisites For Vehicle Detection Software
An image-processing library is OpenCV. It is intended to address issues with computer vision. A C/C++ library called OpenCV has been enhanced by Python.
The Python programming language uses the NumPy library to provide multi-dimensional arrays, matrices, etc. It is a free and open-source Python library for numbers.
NumPy offers the following;
Coding Vehicle Detection Software By Using Open CV - Image
You require to extract an Image to work on then using the NumPy array start converting and resizing it.
image = Image.open(requests.get('https://a57.foxnews.com/media.foxbusiness.com/BrightCove/854081161001/201805/2879/931/524/854081161001_5782482890001_5782477388001-vs.jpg', stream=True).raw)
image = image.resize((450,250))
image_arr = np.array(image)
image
Now, you need a greyscale converted Image for getting better output.
grey = cv2.cvtColor(image_arr,cv2.COLOR_BGR2GRAY)
Image.fromarray(grey)
After this, we'll use GaussianBlur to clean out the image's noise. One image processing approach is a gaussian blur. It is frequently used in visual design as well to lessen noise and smooth the image so that further preprocessing would produce better results. Gaussian blur approach also lessens the image's details while minimizing image noise. Here, we'll use the GaussianBlur function to implement this preprocessing method ().
blur = cv2.GaussianBlur(grey,(5,5),0)
Image.fromarray(blur)
Here, we'll enlarge the picture. Dilation is one of the morphological strategies in which we attempt to fill the pixels with the element, often referred to as kernels or the structured pieces, to fill the remaining spaces in the images as needed.
dilated = cv2.dilate(blur,np.ones((3,3)))
Image.fromarray(dilated)
We will now use the kernel to conduct a morphology transformation. Here, we're employing a morphology-Ex approach, which instructs the function to perform certain image processing tasks. The second argument concerns the necessary procedures, and you might require circular or elliptical-shaped kernels. The get structuring element method will be used to implement the morphology-Ex method in OpenCV.
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (2, 2))
closing = cv2.morphologyEx(dilated, cv2.MORPH_CLOSE, kernel)
Image.fromarray(closing)
To detect autos, we now require a car cascade. Therefore, we must first upload these to Collaborate (if you are doing it in Collab, add the cascade files within the same folder if you are doing it locally) and provide the path car cascade src. Here, we'll train the photos from the pre-trained XML file using OpenCV's preset CascadeClassifier function (Cascade file - car). To utilize detectMultiScale, we must detect numerous items, such as vehicles.
car_cascade_src = 'cars.xml'
car_cascade = cv2.CascadeClassifier(car_cascade_src)
cars = car_cascade.detectMultiScale(closing, 1.1, 1)
cars
The results of car cascade;
array([[376, 1, 22, 22],
[307, 4, 27, 27],
[196, 10, 28, 28],
[ 35, 2, 30, 30],
[150, 163, 68, 68],
[318, 121, 82, 82],
[101, 3, 43, 43],
[317, 66, 66, 66],
[274, 20, 38, 38],
[256, 52, 79, 79],
[245, 24, 20, 20],
[250, 35, 25, 25],
[ 63, 40, 22, 22],
[209, 88, 54, 54],
[ 13, 25, 43, 43],
[384, 84, 59, 59],
[145, 91, 53, 53],
[ 52, 44, 39, 39],
[237, 38, 49, 49],
[362, 43, 46, 46],
[268, 106, 60, 60]], dtype=int32)
We'll create a rectangle around any cars we identify using the contours that were previously returned. Here, we will observe that it will draw a red-bound rectangle around each car it finds.
cnt = 0
for (x,y,w,h) in cars:
cv2.rectangle(image_arr,(x,y),(x+w,y+h),(255,0,0),2)
cnt += 1
print(cnt, " cars found")
Image.fromarray(image_arr)
After this, the number of cars will appear on your screen depending on how many cars your Image shows.
Coding Vehicle Detection Software By Using Open CV - Video
The vehicle detection and counting will now be done in a video. We require the cv2.VideoWriter() method to generate the output video from frames or images. The first parameter is the path with the extension; the second is the codec for the output format; and finally, the parameters for frames per second, height, and width are required.
cascade_src = 'cars.xml'
video_src = 'Cars.mp4'
cap = cv2.VideoCapture(video_src)
car_cascade = cv2.CascadeClassifier(cascade_src)
video = cv2.VideoWriter('result.avi',cv2.VideoWriter_fourcc(*'DIVX'), 15, (450,250))
Now, we'll take a frame at a time from the input video, convert it to grayscale, and use a technique called car cascade to identify every vehicle in that frame. In the end, this film was created utilizing video. and the write() method. This video will be saved to the specified path by release().
Wrapping It Up!
We began by extracting the image that we would be working with before carrying out various operations. We learned how to utilize the haar cascade, which is used to detect objects, and how to use several haar cascades to detect cars. For other object detection, there are other pre-trained haar cascades that you can employ.
We have a broad reach because the haar cascade is used for object detection. It can be used to detect items, and we can design a unique haar cascade for particular objects.Get a daily dose of Hawaii Telegraph news through our daily email, its complimentary and keeps you fully up to date with world and business news as well.
Publish news of your business, community or sports group, personnel appointments, major event and more by submitting a news release to Hawaii Telegraph.
More InformationMOSCOW, Russia: Just hours after his sudden dismissal by President Vladimir Putin, Russia's former transport minister, Roman Starovoit,...
DHARAMSHALA, India: The Dalai Lama turned 90 on July 6, celebrated by thousands of followers in the Himalayan town of Dharamshala,...
ZAGREB, Croatia: A massive concert by popular Croatian singer Marko Perković, known by his stage name Thompson, has drawn widespread...
WASHINGTON, D.C.: Elon Musk's entry into the political arena is drawing pushback from top U.S. officials and investors, as his decision...
CULVER CITY, California: TikTok is preparing to roll out a separate version of its app for U.S. users, as efforts to secure a sale...
WASHINGTON, D.C.: President Donald Trump claimed he was unaware that the term shylock is regarded as antisemitic when he used it in...
LONDON, U.K.: This week, BP appointed Simon Henry, former Shell finance chief, to its board as a non-executive director effective September...
OTTAWA, Canada: With Canada Post struggling to maintain operations amid labour unrest, rivals like FedEx and UPS are stepping in to...
NEW YORK, New York - U.S. and global markets showed a mixed performance in Tuesday's trading session, with some indices edging higher...
PARIS, France: French military and intelligence officials have accused China of orchestrating a covert campaign to damage the reputation...
NEW DELHI, India: Birkenstock is stepping up its efforts to protect its iconic sandals in India, as local legal representatives conducted...
HONG KONG: China has fired back at the European Union in an escalating trade dispute by imposing new restrictions on medical device...