【发布时间】:2020-01-05 23:28:53
【问题描述】:
我正在构建一个网络应用程序来帮助学生学习数学。
应用需要显示来自 LaTex 文件的数学内容。 这些 Latex 文件(漂亮地)呈现为 pdf,借助 pdf2svg,我可以干净地转换为 svg。
(svg 或 png 或任何图像格式)图像看起来像这样:
_______________________________________
| |
| 1. Word1 word2 word3 word4 |
| a. Word5 word6 word7 |
| |
| ///////////Graph1/////////// |
| |
| b. Word8 word9 word10 |
| |
| 2. Word11 word12 word13 word14 |
| |
|_______________________________________|
真实例子:
Web 应用程序的意图是对其进行操作和添加内容,从而导致如下所示:
_______________________________________
| |
| 1. Word1 word2 | <-- New line break
|_______________________________________|
| |
| -> NewContent1 |
|_______________________________________|
| |
| word3 word4 |
|_______________________________________|
| |
| -> NewContent2 |
|_______________________________________|
| |
| a. Word5 word6 word7 |
|_______________________________________|
| |
| ///////////Graph1/////////// |
|_______________________________________|
| |
| -> NewContent3 |
|_______________________________________|
| |
| b. Word8 word9 word10 |
|_______________________________________|
| |
| 2. Word11 word12 word13 word14 |
|_______________________________________|
例子:
单张大图无法让我灵活地进行此类操作。
但如果图像文件被分解成包含单个单词和单个图表的较小文件,我可以进行这些操作。
我认为我需要做的是检测图像中的空白,并将图像切成多个子图像,看起来像这样:
_______________________________________
| | | | |
| 1. Word1 | word2 | word3 | word4 |
|__________|_______|_______|____________|
| | | |
| a. Word5 | word6 | word7 |
|_____________|_______|_________________|
| |
| ///////////Graph1/////////// |
|_______________________________________|
| | | |
| b. Word8 | word9 | word10 |
|_____________|_______|_________________|
| | | | |
| 2. Word11 | word12 | word13 | word14 |
|___________|________|________|_________|
我正在寻找一种方法来做到这一点。 您认为要走的路是什么?
感谢您的帮助!
【问题讨论】:
-
垂直和水平投影。首先将整个图像分割成行,然后将每一行分割成列。
-
谢谢丹。我明白了。您将使用什么工具进行垂直和水平投影?可以自动化吗?它可以检测行和列吗?
-
你所做的基本上是计算每行的平均强度(例如使用
cv2.reduce。用它来识别行之间的白色间隙。找到间隙的中点。使用这些作为切点来生成一组图像,每行一个文本/图形。现在每列重复相同的内容。
标签: opencv image-processing whitespace edge-detection