【问题标题】:labeling characters in special plate在特殊板中标记字符
【发布时间】:2018-03-18 06:28:38
【问题描述】:

我想查找车牌中所有连接的组件。首先,我对我的图像进行阈值处理,然后使用opencv中的连通分量函数来标记二值图像,但是没有检测到红色区域中的字符和蓝色区域中的数字10。如何检测字符?

车牌样本:

【问题讨论】:

  • 图片1中的字符B在红色区域

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


【解决方案1】:

如果您查看阈值图像,我敢打赌您可能也会遇到问题。

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

你可能想看看Adaptive Thresholding,后面可能是Grab-cut

【讨论】:

  • 我使用自适应阈值制作了五张不同的二值图像,但不起作用
【解决方案2】:

尝试使用 Niblack 阈值。这就是我在 Window Size=5 和 k=4.25 时得到的

我将图像转换为灰度,然后进行 Niblack Thresholding。这是一个示例 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()

您必须对阈值图像进行一些腐蚀/膨胀和连通分量分析,以获得右侧的干净结果。

希望这会有所帮助! :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多