Skip to content

Instantly share code, notes, and snippets.

@liamwhite
Created August 25, 2015 23:57
Show Gist options
  • Save liamwhite/63397a17f72bf4ee6aa7 to your computer and use it in GitHub Desktop.
Save liamwhite/63397a17f72bf4ee6aa7 to your computer and use it in GitHub Desktop.
OpenCV-based image similarity analyzer
import cv
from optparse import OptionParser
class Simple2DAnalyser(object):
def __init__(self, imagename):
im = cv.LoadImageM(imagename, cv.CV_LOAD_IMAGE_COLOR)
cv.Smooth(im, im, cv.CV_GAUSSIAN, 3)
# Now let's get four quadrants and our total
halfX = int(round(im.cols/2))
halfY = int(round(im.rows/2))
self.total = self.sumArea(im)
nw_rect = (0, 0, halfX, halfY)
ne_rect = (halfX+1, 0, im.cols-(halfX+1), halfY)
sw_rect = (0, halfY+1, halfX, im.rows-(halfY+1))
se_rect = (halfX+1, halfY+1, im.cols-(halfX+1), im.rows-(halfY+1))
self.nw = self.sumArea(cv.GetSubRect(im, nw_rect))
self.ne = self.sumArea(cv.GetSubRect(im, ne_rect))
self.sw = self.sumArea(cv.GetSubRect(im, sw_rect))
self.se = self.sumArea(cv.GetSubRect(im, se_rect))
def sumArea(self, im):
sums = cv.Sum(im)
self.r = (sums[0]/(im.rows*im.cols))*0.2126
self.g = (sums[1]/(im.rows*im.cols))*0.7152
self.b = (sums[2]/(im.rows*im.cols))*0.0772
return ((self.b+self.g+self.r)/3)
def getValues(self):
return ("%f %f %f %f %f" %
(self.total, self.ne, self.nw, self.se, self.sw))
usage = "usage: %prog filename"
parser = OptionParser(usage=usage)
(options, args) = parser.parse_args()
s = Simple2DAnalyser(args[0])
print(s.getValues())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment