你似乎没有得到任何OpenCV的的答案,所以我在命令行进行了尝试与ImageMagick的,只是在终端。 ImageMagick安装在大多数Linux发行版上,可免费使用macOS和Windows。该技术非常适用于OpenCV,因此如果它适合您,您可以将其移植到其他地方。
我的第一步是做一个5x5框过滤器和80%的阈值以摆脱噪声扫描文物,然后倒置(可能是因为我打算使用形态学,但没有结束)。
convert news.jpg -depth 16 -statistic mean 5x5 -threshold 80% -negate z.png
然后,我跑到通过“连成分分析”并丢弃有过小的区域内的所有斑点(下2000个像素):
输出
Objects (id: bounding-box centroid area mean-color):
110: 1254x723+59+174 686.3,536.0 901824 srgb(0,0,0)
2328: 935x723+59+910 526.0,1271.0 676005 srgb(0,0,0)
0: 1370x1692+0+0 685.2,712.7 399651 srgb(0,0,0)
2329: 303x722+1007+911 1158.0,1271.5 218766 srgb(0,0,0)
25: 1262x40+54+121 685.2,140.5 49820 srgb(255,255,255)
109: 1265x735+54+168 708.3,535.0 20601 srgb(255,255,255)
1: 1274x64+48+48 675.9,54.5 16825 srgb(255,255,255)
2326: 945x733+54+905 526.0,1271.0 16660 srgb(255,255,255)
2327: 312x732+1003+906 1169.9,1271.5 9606 srgb(255,255,255) <--- THIS ONE
421: 403x15+328+342 528.6,350.1 4816 srgb(255,255,255)
7: 141x23+614+74 685.5,85.2 2831 srgb(255,255,255)
这些字段在第一行标记,但有趣的是第二个(块几何)和第四个字段(blob区域)。如您所见,有11行,因此它在图像中找到了11个斑点。第二个字段AxB+C+D
表示一个矩形,其高度为B
像素,其左上角C
像素距离图像左边缘,D
像素距离顶部。
让我们看看一个我都用箭头标记,这将启动2327: 312x732+1003+906
并在一个画一个矩形:
convert news.jpg -fill "rgba(255,0,0,0.5)" -draw "rectangle 1003,906 1315,1638" oneArticle.png
如果你想出去裁剪那篇文章到一个新的图片:
convert news.jpg -crop 312x732+1003+906 article.jpg
如果我们在所有其他框画,我们得到:
你有一些真正的输入图像呢?你展示的内容对于说明这个概念很有用。但你真的需要与现实世界的投入一起工作。 –
添加了一个真实的输入图像,尽管要解析的文档来自各种不同的来源。预计格式总体格式总是相似的,但是行大小,语言,文本格式等容易改变。 – migsvult
这似乎是计算机生成的图像,而不是由扫描仪或相机获取的图像。 (根据所有线条完全水平/垂直的方式来判断)所有输入都是这样的吗?如果是这样,那肯定会让任务更容易。 –