update,
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
import cv2 as cv
|
||||
import numpy as np
|
||||
|
||||
img_cache = {}
|
||||
hist_rgb_cache = {}
|
||||
|
||||
|
||||
def readImage(img_path):
|
||||
global img_cache
|
||||
|
||||
if img_path in img_cache.keys():
|
||||
pass
|
||||
|
||||
else:
|
||||
# read image
|
||||
img_test_rgb = cv.imread(img_path)
|
||||
# convert to gray scale
|
||||
img_test_rgb = cv.resize(img_test_rgb, (1024, 1024))
|
||||
img_cache[img_path] = img_test_rgb
|
||||
|
||||
return img_cache[img_path]
|
||||
|
||||
|
||||
def cachedCvCalcHist(img2_path, channel, num_bins):
|
||||
global hist_rgb_cache
|
||||
|
||||
img_input = readImage(img2_path)
|
||||
|
||||
if tuple([img2_path, channel, num_bins]) in hist_rgb_cache.keys():
|
||||
return hist_rgb_cache[tuple([img2_path, channel, num_bins])]
|
||||
else:
|
||||
hist = cv.calcHist([img_input], [channel], None, [num_bins], [0, 255])
|
||||
hist_rgb_cache[tuple([img2_path, channel, num_bins])] = hist
|
||||
return hist
|
||||
|
||||
|
||||
def compareImgs_hist_rgb(img1_path, img2_path, num_bins=10):
|
||||
total_diff = 0
|
||||
|
||||
for channel in range(3): # Iterate over RGB channels
|
||||
# hist1 = cv.calcHist([img1], [channel], None, [num_bins], [0, 255])
|
||||
# hist2 = cv.calcHist([img2], [channel], None, [num_bins], [0, 255])
|
||||
hist1 = cachedCvCalcHist(img1_path, channel, num_bins)
|
||||
hist2 = cachedCvCalcHist(img2_path, channel, num_bins)
|
||||
|
||||
channel_diff = np.sum(np.abs(hist1 - hist2))
|
||||
total_diff += channel_diff
|
||||
|
||||
return total_diff / (3 * float(1024 * 1024))
|
Reference in New Issue
Block a user