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

Php 如何读取图像上的特定点,然后自动将值导出到html?,php,html,image-processing,Php,Html,Image Processing,我有一个图像如下 是否有一个工具能够读取图像上的红点,然后提供如下输出 <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

我有一个图像如下

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

<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很熟悉,你没有给出任何关于你想在哪里/为什么这样做的上下文,但也许这会让你开始。我正在使用ImageMagick,它是免费的,可以从命令行、PHP、Perl、python、.Net绑定中获得

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

convert question.jpg -fuzz 5% -fill black +opaque red -fill red -opaque red out.jpg
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
convert question.jpg -fuzz 5% -fill black +opaque red -fill white -opaque white -morphology erode:5 square out.jpg
这将为您提供以下图像:

如果需要每个点的像素颜色,可以按如下方式提取:

convert question.jpg -fuzz 5% -fill black +opaque red -fill red -opaque red out.jpg
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
convert question.jpg -fuzz 5% -fill black +opaque red -fill white -opaque white -morphology erode:5 square out.jpg
因此,如果您只需要红点的坐标,请将
more
更改为
grep red
,您将看到红色像素位于729,81,依此类推

如果圆太大,并且您希望将它们缩小为点,可以使用形态学操作符
腐蚀
,如下所示:

convert question.jpg -fuzz 5% -fill black +opaque red -fill red -opaque red out.jpg
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
convert question.jpg -fuzz 5% -fill black +opaque red -fill white -opaque white -morphology erode:5 square out.jpg
你会得到这个:


Ahh,如果可能的话,我还想破解黑色文本的验证码图像。感谢您的回复,您认为解决上述问题的最佳解决方案是什么?有问题请我们推荐或查找书籍、工具、软件库,教程或其他非站点资源对于堆栈溢出来说是非主题的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,请描述这个问题以及迄今为止为解决它所做的工作。试试这个,看看@kkuilla我仍然很困惑,我应该从哪里开始寻找解决方案。哇,非常感谢@Mark,我真的很感谢你的回答,我会尝试的。它很有魅力,再次感谢@Mark,你是救世主。是的,标记这个答案回答回答我的问题,再次感谢@Mark