Прежде всего, я использую python 3.7 с openCV 3.4.6.27
У меня есть файл python, который обнаруживает автомобили на шоссе (в видео) .` Разрешение видео 1280 * 720. Он обнаруживает автомобили и сохраняет изображение автомобиля. Изображение машины всегда меньше 200 * 200 пикселей. В изображении автомобиля я должен обнаружить номерной знак и сохранить его изображение.
Но вот проблема, изображение автомобиля имеет такое низкое разрешение, что я не могу определить контур, окружающий номерной знак. В максимуме я могу получить изображение лобового стекла и в большинстве случаев даже не это.
* Я изменил размер изображения до большего размера, который не помог. * Я использовал выравнивание гистограммы, и это еще больше испортило изображение (хотя я все равно не знаю, как это работает) * Я использовал порог, но он тоже не работал (цвета автомобилей и номерных знаков сильно различаются) * Иногда помогает двусторонняя фильтрация иногда нет.
Так может ли кто-нибудь подсказать, что я должен сделать, чтобы иметь возможность обнаружить номерной знак? Пожалуйста, смотрите изображения в этой ссылке. Обнаружение лицензии на изображения
Вот мой код:
import numpy as np
import cv2
import imutils
imgFile = cv2.imread('1.jpeg')
areaTH = (imgFile.shape[0]*imgFile.shape[1])//1000
image = cv2.cvtColor(imgFile, cv2.COLOR_BGR2GRAY)
image = cv2.bilateralFilter(image, 20, 50, 50)
highThresh, thresh_im = cv2.threshold(image, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
lowThresh = 0.5*highThresh
image = cv2.Canny(image, lowThresh, highThresh)
cv2.imshow('canny', image)
cv2.imwrite('canny.png',image)
cnts = cv2.findContours(image, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)[1]
for i in cnts:
if cv2.contourArea(i) > areaTH:
peri = cv2.arcLength(i, True)
approx = cv2.approxPolyDP(i, 0.05 * peri, True)
if (len(approx) == 4):
cv2.drawContours(imgFile, [i], 0, (0,255,0), -1)
x,y,w,h = cv2.boundingRect(approx)
cv2.rectangle(imgFile, (x, y), (x + w, y + h), (0,0,255), 1)
cv2.imshow('contour_detected',imgFile)
cv2.imwrite('contour_detected.png', imgFile)
cv2.waitKey(0)