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 California 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 California Telegraph.
More InformationECAULT BEACH, France: On clear days, the white cliffs of the United Kingdom, are visible from northern France, where men, women, and...
ATLANTA, Georgia: The United States is facing its worst measles outbreak in more than three decades, with 1,288 confirmed cases so...
In the past month alone, 23 Israeli soldiers have been killed in Gaza—three more than the number of remaining living hostages held...
LONDON, U.K.: At least 13 people are believed to have taken their own lives as a result of the U.K.'s Post Office scandal, in which...
WASHINGTON, D.C.: Travelers at U.S. airports will no longer need to remove their shoes during security screenings, Department of Homeland...
WASHINGTON, D.C.: An elaborate impersonation scheme involving artificial intelligence targeted senior U.S. and foreign officials in...
SAN FRANCISCO, California: Nvidia, the Silicon Valley chipmaker at the heart of the artificial intelligence boom, this week briefly...
REDMOND, Washington: Artificial intelligence is transforming Microsoft's bottom line. The company saved over US$500 million last year...
WASHINGTON, D.C.: A federal rule designed to make it easier for Americans to cancel subscriptions has been blocked by a U.S. appeals...
BASTROP, Texas: In a surprising turn at Elon Musk's X platform, CEO Linda Yaccarino announced she is stepping down, just months after...
NEW YORK CITY, New York: Former British prime minister Rishi Sunak will return to Goldman Sachs in an advisory role, the Wall Street...
LONDON, U.K.: Physically backed gold exchange-traded funds recorded their most significant semi-annual inflow since the first half...