使用imagemagick检测轮廓

时间:2014-05-24 20:30:13

标签: java image imagemagick

我试图检测图像中的矩形,我知道OpenCv可以实现这一点,但我正在考虑使用ImageMagick。
问题是,是否可以使用ImageMagick进行操作?我想在ImageMagick中找到OpenCV的等效findContours函数,但我找不到它?

enter image description here

2 个答案:

答案 0 :(得分:0)

这是一个不完全健壮的版本,可以实现simply connected regions所需的功能。它发挥的作用是,轮廓束缚的区域没有孔,没有区域与坐标0,0接触。两者都不可能在我的申请中,所以我能够利用这些事实来确定背景。我也可以利用我事先知道轮廓的颜色是什么,我用#ContourColor指出了

convert inputImage.jpg -fill black         +opaque  #ContourColor
                       -fill blue          -draw    "color 0,0 floodfill"
                       -fill #ContourColor -opaque  black
                       -fill white         -opaque  #ContourColor
                       -fill black         -opaque  blue
                       outputImage.jpg

这是每个步骤的细分......

  
      
  1. 将所有非ContourColor填充为黑色
  2.   
  3. 将背景填充为蓝色,假设没有简单连接的对象触及左上角的像素0,0
  4.   
  5. 将所有黑色内饰填充为ContourColor以填充轮廓
  6.   
  7. 将ContourColor替换为白色以建立前景
  8.   
  9. 将蓝色背景替换为黑色以建立背景
  10.   

对于ImageMagick来说,实现与OpenCV相同的轮廓功能非常有用,但是我和你在同一条船上我只是在寻找一个简单的工具来梳理我的某些区域。恰好是手绘,并希望在一些图像处理回归测试中使用。我不想编写一个完整的应用程序来进行这些分段比较,我希望通过编写一些ImageMagick魔法来获取它!

答案 1 :(得分:0)

由于轮廓和文字的粗细,此图像的轮廓将为双线。例如,要获取绿色框的轮廓(轮廓),请使用

convert HetI7.jpg -fuzz 20% -fill white +opaque green1 -morphology edgeout diamond:1 -negate green_outline.png

enter image description here

但也许你只想要绿色的盒子,而不是它的轮廓。

convert HetI7.jpg -fuzz 40% -fill white +opaque green1 green_region.png

enter image description here