How can I replace the white rectangle within an image using ImageMagick?

前端 未结 1 1025
眼角桃花
眼角桃花 2021-01-18 04:25

Overview:

The first picture is my original image. Here I want to replace the white rectangle shown with another image.

相关标签:
1条回答
  • 2021-01-18 04:59

    I think you can locate the shape pretty accurately with a simple threshold, like this:

    convert image.jpg -threshold 90% result.jpg
    

    enter image description here

    and you can then do a Canny edge detection like this:

    convert image.jpg -threshold 90% -canny 0x1+10%+30% result.jpg
    

    enter image description here

    The next things I would be looking at are, using the -trim function to find the trim box coordinates, like this:

    convert result.jpg -format "%@" info:
    320x248+152+40
    

    I have marked that on in red below.

    enter image description here

    If you actually want to do the trim, use this:

    convert result.jpg -trim result.jpg
    

    enter image description here

    And also, the deskew angle

    convert result.jpg -deskew 40 -format "%[deskew:angle]" info:
    -0.111906
    

    A Hough line detection may also be effective for you like this:

    convert image.jpg -threshold 90% -canny 0x1+10%+30%      \
        \( +clone -background none                           \
                  -fill red -stroke red -strokewidth 2       \
                  -hough-lines 5x5+80 -write lines.mvg       \
        \) -composite hough.png
    

    enter image description here

    And the file lines.mvg contains the 4 lines you are looking for

    # Hough line transform: 5x5+80
    viewbox 0 0 640 360
    line 449.259,0 474.432,360  # 90
    line 0,72.5604 640,27.8072  # 143
    line 0,293.098 640,248.344  # 187
    line 153.538,0 178.712,360  # 153
    

    Being a bit lazy, I didn't feel like solving for the intersections of those lines, so I thought I'd let ImageMagick do that too - by using Morphology to look for Line Junctions like this:

    convert image.jpg -threshold 90% -canny 0x1+10%+30%                        \
      \( +clone -background none -fill red -stroke red -hough-lines 5x5+80 \)  \ 
         -composite -fuzz 50% -fill black -opaque white                        \
         -morphology HMT LineJunctions hough.png
    

    enter image description here

    0 讨论(0)
提交回复
热议问题