简体   繁体   中英

How to identify same objects in a image with different background, size and dimension

My requirement is something different. I have an image of a key which is on table top. I have same key which in on floor. The dimension and size of photos and keys are different but keys are same. Now I want to compare only keys and show that those are same. How to do with python and OpenCV. My current code is analyzing with histogram and gray image of entire image but I want it to for a particular object (Here is Key) in the image.

My current code is;

# Original image
      image = cv2.imread(values[0])
      gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
      histogram = cv2.calcHist([gray_image], [0], 
                                 None, [256], [0, 256])

           
# Input1 image
      image1 = cv2.imread(values[1])
      gray_image1 = cv2.cvtColor(image1, cv2.COLOR_BGR2GRAY)
      histogram1 = cv2.calcHist([gray_image1], [0], 
                                  None, [256], [0, 256])

     
  
   
c1 = 0
   

i = 0
while i<len(histogram) and i<len(histogram1):
    c1+=(histogram[i]-histogram1[i])**2
    i+= 1
c1 = c1**(1 / 2)
   
  

if(c1==0):
    print("Input image is matching with original image.")
elif(c1>0 or c1<0):
 

print("Input image is not matching with original image")

You can use OpenCv findHomography and perspectiveTransform as shown in this example in the documentation https://docs.opencv.org/2.4/doc/tutorials/features2d/feature_homography/feature_homography.html#feature-homography (old version).

Updated for Python: https://docs.opencv.org/master/d1/de0/tutorial_py_feature_homography.html

The idea is to find the same object features in two images considering homographies:

在此处输入图像描述

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM