如何读取图像上的特定点,然后自动将值导出到html?

时间:2014-09-18 08:05:17

标签: php html image-processing

我的图片如下

http://forkiki.com/forkita/image.iklan/question.jpg

是否有工具能够读取图像上的红点,然后按如下方式提供输出

<img src="test.jpg" width="1024" height="768" alt="Pinguins" usemap="#pinguins">
<map name="pinguins">
  <area shape="circle" coords="90,58,3" alt="Dot1">
  <area shape="circle" coords="124,58,8" alt="Dot2">
</map>

我熟悉php

1 个答案:

答案 0 :(得分:2)

您没有提供关于您希望在何处/为何做到这一点的任何背景信息,但这可能会让您开始。我正在使用免费的ImageMagick,它可以从here获得命令行,PHP,Perl,python,.Net绑定。

拍摄图像,您可以识别所有红色像素:

convert question.jpg -fuzz 5% -fill black +opaque red -fill red -opaque red out.jpg

将为您提供此图片:

enter image description here

如果你想要每个点的像素颜色,你可以像这样提取它们:

convert question.jpg -fuzz 5% -fill black +opaque red -fill red -opaque red text: | more

# ImageMagick pixel enumeration: 1024,768,255,srgb
0,0: (0,0,0)  #000000  black
1,0: (0,0,0)  #000000  black
2,0: (0,0,0)  #000000  black
....
....
729,81: (255,0,0)  #FF0000  red
730,81: (255,0,0)  #FF0000  red
725,82: (255,0,0)  #FF0000  red
726,82: (255,0,0)  #FF0000  red

因此,如果您只想要红点的坐标,请将more更改为grep red,您会看到红色像素位于729,81,依此类推。

如果圆圈太大,并且您希望它们朝向点减少,则可以使用形态运算符erode,如下所示:

convert question.jpg -fuzz 5% -fill black +opaque red -fill white -opaque white -morphology erode:5 square out.jpg

你会得到这个:

enter image description here