gpt4 book ai didi

python - 车载摄像头车牌检测

转载 作者:太空宇宙 更新时间:2023-11-03 22:50:25 25 4
gpt4 key购买 nike

我正在使用 Python 和 Opencv。我正在做一个从汽车摄像头识别车牌的项目。

我试过用Canny(),还是认不出车牌。

这是我捕获的帧。 enter image description here

1)

首先,我将图像转换为灰度,增加颜色对比,最后将其转换为“边缘图像

img = cv2.imread("plate.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray = cv2.equalizeHist(gray)
edged = cv2.Canny(gray, 200, 255)

这是我得到的结果: enter image description here

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)

但是,我仍然无法识别车牌。我正在寻求帮助如何检测车牌。谢谢。

最佳答案

您可以使用凸包的最小边界矩形来计算候选轮廓的“矩形度”(在最新版本的 openCV 中,您可以使用 cv2.boxPoints 来计算 rectPoints):

def rectangleness(hull):
rect = cv2.boundingRect(hull)
rectPoints = np.array([[rect[0], rect[1]],
[rect[0] + rect[2], rect[1]],
[rect[0] + rect[2], rect[1] + rect[3]],
[rect[0], rect[1] + rect[3]]])
intersection_area = cv2.intersectConvexConvex(np.array(rectPoints), hull)[0]
rect_area = cv2.contourArea(rectPoints)
rectangleness = intersection_area/rect_area
return rectangleness

然而,在您的情况下,这实际上是矫枉过正,使用多边形的面积就足够了——您的区域截止范围内的任何一个多边形(cnts 中的前两个轮廓)都可用于获得车牌周围的边界矩形。

关于python - 车载摄像头车牌检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39070837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com