Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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
Image processing 使用傅立叶变换检测填充表单中方框中的手写字符_Image Processing_Computer Vision_Artificial Intelligence_Icr - Fatal编程技术网

Image processing 使用傅立叶变换检测填充表单中方框中的手写字符

Image processing 使用傅立叶变换检测填充表单中方框中的手写字符,image-processing,computer-vision,artificial-intelligence,icr,Image Processing,Computer Vision,Artificial Intelligence,Icr,我正在尝试从方框中提取手写字符。表单的扫描不一致,因此框的宽度和高度也不是常数 这是表格的一部分 我目前的做法: 1。提取水平线 2。提取垂直线 3。将以上两幅图像组合起来 4。查找轮廓(使用opencv) 这种方法给了我大部分的盒子。但是,当框中填充“L”或“I”等字符时,字符中的垂直线也将作为垂直线提取的一部分进行提取。因此,轮廓也会变得混乱。 由于盒子是周期性排列的,有没有办法使用快速傅立叶变换提取盒子 傅里叶变换是我最后想到的 我宁愿尝试使用Hough线检测器来获得长线,或者像您那样使

我正在尝试从方框中提取手写字符。表单的扫描不一致,因此框的宽度和高度也不是常数

这是表格的一部分

我目前的做法:
1。提取水平线
2。提取垂直线
3。将以上两幅图像组合起来
4。查找轮廓(使用opencv)

这种方法给了我大部分的盒子。但是,当框中填充“L”或“I”等字符时,字符中的垂直线也将作为垂直线提取的一部分进行提取。因此,轮廓也会变得混乱。

由于盒子是周期性排列的,有没有办法使用快速傅立叶变换提取盒子

傅里叶变换是我最后想到的


我宁愿尝试使用Hough线检测器来获得长线,或者像您那样使用边缘检测,但我会显式地重建网格,找到它们的间距和行/列的确切位置,从而找到每个单元格。

我最近提出了一个python包来处理这个确切的问题。
我通过以下方式调用并安装了它:

pip install boxdetect
它可能看起来有点像这样(您需要调整不同形式的参数:

从boxdetect导入配置
config.min_w,config.max_w=(20,50)
config.min_h,config.max_h=(20,50)
config.scaling_factors=[0.4]
config.diagration\u迭代次数=0
config.wh_ratio_range=(0.5,2.0)
config.group\u size\u range=(1100)
config.horizontal\u max\u distance\u乘数=2
从boxdetect.pipelines导入get_框
image\u path=“dumpster/m1nda.jpg”
矩形、分组矩形、组织图像、输出图像=获取框(图像路径、配置、绘图=假)

您可能希望查看下面的线程以了解更多信息:

您可以尝试按颜色选择手写字符。 例如:

结果:

您可以尝试在HSV颜色空间中为蓝色墨水选择使用cv2.InRange()。
import cv2
import numpy as np
img=cv2.imread('YdUqv .jpg')
#convert to hsv
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
#color definition
color_lower = np.array([105,80,60])
color_upper = np.array([140,255,255])
# select  color objects
mask = cv2.inRange(hsv, color_lower, color_upper)
cv2.imwrite('hand.png', mask)