|
|
import cv2 |
|
|
import numpy as np |
|
|
|
|
|
class SpeedDetector: |
|
|
def __init__(self): |
|
|
|
|
|
self.model = self._load_model() |
|
|
|
|
|
def _load_model(self): |
|
|
""" |
|
|
Load speed detection model |
|
|
Here we use a simple template matching method |
|
|
More complex deep learning models should be used in practical applications |
|
|
""" |
|
|
|
|
|
return None |
|
|
|
|
|
def detect_speed(self, frame): |
|
|
""" |
|
|
Detect speed from image |
|
|
:param frame: Input image |
|
|
:return: Detected speed (km/h) |
|
|
""" |
|
|
|
|
|
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) |
|
|
|
|
|
|
|
|
edges = cv2.Canny(gray, 50, 150) |
|
|
|
|
|
|
|
|
lines = cv2.HoughLinesP(edges, 1, np.pi/180, 100, minLineLength=100, maxLineGap=10) |
|
|
|
|
|
if lines is None: |
|
|
return 0 |
|
|
|
|
|
|
|
|
|
|
|
speed = len(lines) * 5 |
|
|
|
|
|
return min(speed, 120) |