Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 非均匀背景图像中的字符检测_Python_Opencv - Fatal编程技术网

Python 非均匀背景图像中的字符检测

Python 非均匀背景图像中的字符检测,python,opencv,Python,Opencv,我试图做字符检测,必须在字符周围画一个框,然后裁剪,然后输入神经网络进行识别。一切正常,但在我使用单色背景图像上的字符集之前,分割很容易完成 然而,对于真实的照片,我有不同的照明条件,真的很难找到轮廓。 在应用了一些自适应阈值后,我成功地获得了以下结果,但从那开始,我真的不知道如何正确地继续并检测每个角色。我可以很容易地发现一半的字符,但不是全部。可能是因为它们被许多不相关的小轮廓所包围。 我觉得还有一步要走,但我不知道是哪一步。 Find Countours只能找到大约一半的字符 简而言之,现

我试图做字符检测,必须在字符周围画一个框,然后裁剪,然后输入神经网络进行识别。一切正常,但在我使用单色背景图像上的字符集之前,分割很容易完成

然而,对于真实的照片,我有不同的照明条件,真的很难找到轮廓。 在应用了一些自适应阈值后,我成功地获得了以下结果,但从那开始,我真的不知道如何正确地继续并检测每个角色。我可以很容易地发现一半的字符,但不是全部。可能是因为它们被许多不相关的小轮廓所包围。 我觉得还有一步要走,但我不知道是哪一步。 Find Countours只能找到大约一半的字符

简而言之,现在我在做:

im_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
im_gray = cv2.GaussianBlur(im_gray, (5, 5), 0)
_, th1 = cv2.threshold(im_gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
cim, ctrs, hier = cv2.findContours(th1.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

下图-原始图像和中间结果的一些变化


所以问题是-分割字符的步骤是什么?

您可以执行高斯差分。想法是用两个不同的核模糊图像,并减去它们各自的结果:

代码:

im = cv2.imread(img, 0)

#--- it is better to take bigger kernel sizes to remove smaller edges ---
kernel1 = 15
kernel2 = 31

blur1 = cv2.GaussianBlur(im,(kernel1, kernel1), 0) 
blur2 = cv2.GaussianBlur(im,(kernel2, kernel2), 0) 

cv2.imshow('Difference of Gaussians',blur2 - blur1)
结果:

im = cv2.imread(img, 0)

#--- it is better to take bigger kernel sizes to remove smaller edges ---
kernel1 = 15
kernel2 = 31

blur1 = cv2.GaussianBlur(im,(kernel1, kernel1), 0) 
blur2 = cv2.GaussianBlur(im,(kernel2, kernel2), 0) 

cv2.imshow('Difference of Gaussians',blur2 - blur1)

您是否尝试过降低噪音。Wiki中有一些可怕的名字,所以请尝试在opencv中搜索特定的技术,以查看结果(例如)。谢谢!实际上我还没试过这个。是的,可怕的名字并不可怕:)太好了,谢谢!这实际上比我所有的研究结果都要好struggles@Alex尝试改变内核的大小,可以看到不同的结果。