0

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

车牌样本:

在此处输入图像描述 在此处输入图像描述

4

2 回答 2

1

尝试使用 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()

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

希望这可以帮助!:)

于 2017-10-07T19:36:39.170 回答
0

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

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

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

于 2017-10-06T13:06:57.453 回答