我想在车牌中找到所有连接的组件。首先,我对我的图像进行阈值处理,然后使用opencv中的连通分量函数来标记二值图像,但是没有检测到红色区域中的字符和蓝色区域中的数字10。我能做些什么来检测一个字符?
车牌样本:
我想在车牌中找到所有连接的组件。首先,我对我的图像进行阈值处理,然后使用opencv中的连通分量函数来标记二值图像,但是没有检测到红色区域中的字符和蓝色区域中的数字10。我能做些什么来检测一个字符?
车牌样本:
尝试使用 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()
您必须对阈值图像进行一些腐蚀/膨胀和连通分量分析,才能在右侧获得干净的结果。
希望这可以帮助!:)
我敢打赌,如果您查看阈值图像,您可能也会遇到问题。
我假设您使用了单个阈值(并且可能是灰度)。但是这里有三种效果:图像由几个区域组成,它是彩色的,还有一个阴影。
你可能想看看Adaptive Thresholding,可能后面跟着Grab-cut