How do I find an image contained within an image?

后端 未结 3 1648
灰色年华
灰色年华 2020-11-30 20:38

I\'m currently building what basically amounts to a cross between a search engine and a gallery for web comics that\'s focused on citing sources and giving authors credit.

3条回答
  •  臣服心动
    2020-11-30 20:52

    For anyone who stumbles across this in the future.

    This can be done with template matching. To summarize (my understanding), template matching looks for an exact match of one image within another image.

    Here's an example of how to do it within Python:

    import cv2
    
    method = cv2.TM_SQDIFF_NORMED
    
    # Read the images from the file
    small_image = cv2.imread('small_image.png')
    large_image = cv2.imread('large_image.jpeg')
    
    result = cv2.matchTemplate(small_image, large_image, method)
    
    # We want the minimum squared difference
    mn,_,mnLoc,_ = cv2.minMaxLoc(result)
    
    # Draw the rectangle:
    # Extract the coordinates of our best match
    MPx,MPy = mnLoc
    
    # Step 2: Get the size of the template. This is the same size as the match.
    trows,tcols = small_image.shape[:2]
    
    # Step 3: Draw the rectangle on large_image
    cv2.rectangle(large_image, (MPx,MPy),(MPx+tcols,MPy+trows),(0,0,255),2)
    
    # Display the original image with the rectangle around the match.
    cv2.imshow('output',large_image)
    
    # The image is only displayed if we call this
    cv2.waitKey(0)
    

提交回复
热议问题