- Haar, Extract Region
- Euclidean distance
- Cosine distance
- Hamming distance
- Jaccard-Needham dissimilarity
SSIM Approach Technique of structural similarity
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import cv2 | |
img1 = cv2.imread(r'D:\PetProject\image_comparison\4.jpg',0) | |
face_cascade = cv2.CascadeClassifier(r'D:\PetProject\image_comparison\Haar.xml') | |
#Perform Haar | |
faces = face_cascade.detectMultiScale(img1, 1.3, 5) | |
for (x,y,w,h) in faces: | |
#Extract | |
face1 = img1[y:y+h, x:x+w] | |
#Resize | |
face1 = cv2.resize(face1,(120,120), interpolation = cv2.INTER_CUBIC) | |
img2 = cv2.imread(r'D:\PetProject\image_comparison\5.jpg',0) | |
#Perform Haar | |
#Extract | |
#Resize | |
faces = face_cascade.detectMultiScale(img2, 1.3, 5) | |
for (x,y,w,h) in faces: | |
face2 = img2[y:y+h, x:x+w] | |
face2 = cv2.resize(face2,(120,120), interpolation = cv2.INTER_CUBIC) | |
cv2.imshow('face1 1',face1) | |
cv2.waitKey(0) | |
cv2.imshow('face2 2',face2) | |
cv2.waitKey(0) | |
#Euclidean Distance | |
import scipy.spatial.distance as dist | |
import numpy as np | |
#Convert to 1D | |
img1_data= face1.reshape(-1) | |
#Normalize | |
img1_data= img1_data/255.0 | |
img2_data= face2.reshape(-1) | |
img2_data = img2_data/255.0 | |
print(len(img1_data)) | |
print(len(img2_data)) | |
#Computes the Euclidean distance between two 1-D arrays | |
print(dist.euclidean(img1_data,img2_data)) | |
#Compute the Cosine distance between 1-D arrays. | |
#A.B= A.B/(|A||B|) | |
print(dist.cosine(img1_data,img2_data)) | |
#Compute the Hamming distance between two 1-D arrays | |
#Hamming distance is the number of bit positions in which the two bits are different | |
print(dist.hamming(img1_data,img2_data)) | |
#Compute the Jaccard-Needham dissimilarity between two boolean 1-D array | |
#Jaccard distance, which measures dissimilarity between sample sets | |
print(dist.jaccard(img1_data,img2_data)) | |
cv2.destroyAllWindows() |
Happy Learning!!!
No comments:
Post a Comment