Я использую Python и Opencv. Я делаю проект, чтобы узнать номерной знак с автомобильной камеры.Номер лицензии Обнаружение с камеры автомобиля
Я попытался использовать Canny()
, но я все еще не могу распознать тарелку.
1)
Во-первых, преобразовать изображение в серой шкалы, увеличить контракт цвета и, наконец, превратить его в "обрезной изображение"
img = cv2.imread("plate.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray = cv2.equalizeHist(gray)
edged = cv2.Canny(gray, 200, 255)
Вот результат: то, что я получаю:
2)
Затем я пытаюсь найти прямоугольник контур следующим образом, я попытался отфильтровать ненужную прямоугольник по площади и длине и неправильного многоугольника по convexHull()
:
(cnts, _) = cv2.findContours(edged.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
cnts=sorted(cnts, key = cv2.contourArea, reverse = True)[:10]
# loop over our contours
plate_candidates = []
for c in cnts:
peri = cv2.arcLength(c, True)
approx = cv2.approxPolyDP(c, 0.02 * peri, True)
area = cv2.contourArea(approx)
if len(approx) == 4 and area <=1000 and area >=500 and self._length_checking(approx):
hull = cv2.convexHull(approx,returnPoints = True)
if len(hull) ==4:
plate_candidates.append(approx)
cv2.drawContours(show, [approx], -1, (0,255,0), 3)
Но все же я не могу распознать тарелку. Я ищу помощь, как определить номерной знак. Спасибо.
Спасибо за ваш ответ. Вы имеете в виду, что ограничения, которые я использовал, слишком строги? С помощью 'area' и' rectangleeness' достаточно хорошо обнаружить прямоугольник? – VICTOR
в вашем случае вам даже не нужна прямоугольность, вы можете просто использовать область – maxymoo
Я использовал этот метод раньше, однако иногда я обнаруживаю некоторую не-четырехугольную форму. Чтобы отфильтровать эту не-четырехугольную или неправильную форму, я использую 'len (hull) == 4', чтобы определить – VICTOR