老铁!怎么识别一张图片上文字的颜色

2017-04-14 19:11:28 +08:00
 fffflyfish

各位好,最近小弟遇到一个问题,就是怎么识别一张图片上文字的颜色,我目前的解决方法如下:

首先使用 ocr 工具先在图片上找出一行文本,然后把这一行文本中的每个文字都切片,然后对每个切片抽取 5 个颜色,选择占面积最大的颜色作为该切片上的文字颜色,但是因为一张图片上文字的颜色可能不一样,我这里只是想抽取一种颜色,所以我就把所有切片的文字颜色综合起来,找出其中出现数量最多的颜色,并把这个颜色作为该张图片的文字颜色。

以上就是我的方法,但是很耗时间,各位老铁有什么更好的方法吗?

6173 次点击
所在节点    Python
28 条回复
zhidian
2017-04-15 13:42:35 +08:00
@fffflyfish 边缘提取不能二值化啊 ==(只有两种像素还提取啥啊 ==)。通常先处理成灰度倒是真的。
JerryCha
2017-04-15 16:45:49 +08:00
你都得 OCR 的结果了,直接对结果进行边缘检测就能提取边缘了,干净有效。或者用 OCR 结果与原图逐个像素进行与运算,相当于抠图把文字从原图里抠出来,然后马赛克化,再从 HSV 通道统计颜色信息。
理论上来说,统计个颜色不会很慢,跑 1min 太夸张了
fffflyfish
2017-04-15 16:59:00 +08:00
@pimin @zhidian
我根据两位的思路做了一个 ocr 的前期的文字区域识别的方法,但是有点问题,先给你们看下效果图:
![]( )
![]( )
![]( )
但是有个问题,在前期选区的时候需要对图像进行斑点检测,然后生成二值化图像,问题就出在二值化图像这里,阈值不好选,跟文字的颜色和文字所在背景的颜色有很大的关系,以下是检测出错的:
![]( )
两位老哥有啥建议不
fffflyfish
2017-04-15 17:04:22 +08:00
@JerryCha 对哦,我试试,谢谢啦
zhidian
2017-04-16 00:44:10 +08:00
这些文字的框的坐标你都知道吗?(用的什么软件?)如果是自己代码找到了框的位置,画上去的,你就可以直接统计了啊。==
fffflyfish
2017-04-16 12:30:03 +08:00
@zhidian 对,我进行斑点检测,找到的所有框,用 python 的 skimage 库做的, opencv 应该也可以。直接统计还是会有点小问题的,我还在想法解决
xiaotianhu
2017-04-16 17:46:25 +08:00
PHP 聚类算法 就可以的,代码不多 几百行搞定了
http://www.phpfensi.com/php/20140827/4848.html
fffflyfish
2017-04-16 17:51:19 +08:00
@xiaotianhu 谢谢啦,提取图像颜色不是问题,问题在于要提取图像上某一个元特定素的颜色的问题,这个可能就会涉及到识别和检测相关的算法

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/354940

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2017 V2EX