特殊板材中的标记字符

时间:2017-10-06 12:36:35

标签: c++ opencv connected-components opencv3.2

我想在牌照中找到所有连接的组件。首先,我对图像进行阈值处理,然后在opencv中使用连通分量函数来标记二进制图像,但是未检测到红色区域中的字符和蓝色区域中的数字10。我该怎么做来检测角色?

车牌样品:

enter image description here enter image description here

2 个答案:

答案 0 :(得分:1)

尝试使用Niblack阈值处理。这是我用窗口大小= 5和k = 4.25得到的 enter image description here

我将图像转换为灰度,然后进行了Niblack阈值处理。这是一个示例Python代码。 (代码不包括连接组件分析和屏蔽,这是获取右侧输出所需的)

import cv2 
import numpy as np
from skimage.filters import threshold_niblack


image = cv2.imread('IRplate.jpg')
B_Wimage = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)


thresh = threshold_niblack(B_Wimage, window_size=5, k=4.25)
ret,thresh = cv2.threshold(thresh,0,255,cv2.THRESH_BINARY_INV)


cv2.imshow('A1',thresh)
k = cv2.waitKey(0)
cv2.destroyAllWindows()

您必须在阈值图像上进行一些侵蚀/扩张和连通分量分析才能获得清晰的结果。

希望这有帮助! :)

答案 1 :(得分:0)

我打赌你可能也有问题,如果你看一下阈值图像。

我假设您使用了一个阈值(可能还有一个灰度)。但是你在这里有三种效果:图像由几个区域组成,它是彩色的,并且有一个阴影。

您可能需要查看Adaptive Thresholding,可能后面跟Grab-cut