def setUp(self): imageFile = '../test/test.jpg' self.image = ImageIO.cv2read(imageFile) self.grayscale = cv2.cvtColor(self.image,cv2.COLOR_BGR2GRAY) self.stats = stats() self.fft = fft() self.feats = Features() self.lap = Laplacian() self.edges = Edges()
def imageHandler(imgfile): retStrings = [] if imgfile in seen: return if os.path.isdir(os.path.join(args.directory, imgfile)): temp = os.listdir(os.path.join(args.directory, imgfile)) for f in temp: images.append(os.path.join(imgfile, f)) return # silently skip the bin files that have the gps data if imgfile.endswith('bin'): return # alert to other files that were skipped if not (imgfile.endswith('png') | imgfile.endswith('jpg')): sys.stderr.write("Skipped file: " + imgfile + "\n") return if args.verbose: sys.stderr.write("Parsing " + imgfile + "\n") retStrings.append( imgfile + "\t" ) img = ImageIO.cv2read(os.path.join(args.directory, imgfile)) gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) ngray = Normalization.equalizeHistograms(gray) ngray = cv2.GaussianBlur(ngray, (3,3), 0) feats.detect_kp_ORB(ngray) retStrings.append( str(feats.numberKeyPoints()) + "\t" + str(feats.medianKeyPointSize()) + "\t" + str(feats.meanKeyPointSize()) ) for i in range(15): retStrings.append("\t" + str(feats.numKeyPoints(i*10))) retStrings.append("\n") return retStrings
for f in temp: images.append(os.path.join(imgfile, f)) continue # silently skip the bin files that have the gps data if imgfile.endswith('bin'): continue # alert to other files that were skipped if not (imgfile.endswith('png') | imgfile.endswith('jpg')): sys.stderr.write("Skipped file: " + imgfile + "\n") continue if args.verbose: sys.stderr.write("Parsing " + imgfile + "\n") fout.write( imgfile + "\t" ) img = ImageIO.cv2read(os.path.join(args.directory, imgfile)) gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) ngray = Normalization.equalizeHistograms(gray) ngray = cv2.GaussianBlur(ngray, (3,3), 0) feats.detect_kp_ORB(ngray) fout.write( str(feats.numberKeyPoints()) + "\t" + str(feats.medianKeyPointSize()) + "\t" + str(feats.meanKeyPointSize()) ) for i in range(15): fout.write("\t" + str(feats.numKeyPoints(i*10))) fout.write("\n")
def imageWriter(images,seen,args,fout,classification,stats,fft,lap,edge): for imgfile in images: if imgfile in seen: continue if os.path.isdir(os.path.join(args.directory, imgfile)): temp = os.listdir(os.path.join(args.directory, imgfile)) for f in temp: images.append(os.path.join(imgfile, f)) continue #rewrite of above if statement #if os.path.isdir(os.path.join(args.directory,imgfile)): # temp = os.listdir(os.path.join(args.directory,imgfile)) # pool = Pool() # pool.map(images.append, os.path.join(imgfile, f)) # pool.close() # pool.join() # continue if not args.all and imgfile not in classification: continue # silently skip the bin files that have the gps data if imgfile.endswith('bin'): continue # alert to other files that were skipped if not (imgfile.endswith('png') | imgfile.endswith('jpg')): sys.stderr.write("Skipped file: " + imgfile + "\n") continue if args.verbose: sys.stderr.write("Parsing " + imgfile + "\n") fout.write( imgfile + "\t" ) if imgfile in classification: fout.write( classification[imgfile] + "\t") else: fout.write( "unknown\t" ) img = ImageIO.cv2read(os.path.join(args.directory, imgfile)) gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) fout.write( ('\t'.join(map(str, [stats.min(gray), stats.max(gray), stats.median(gray), stats.mean(gray)]))) + "\t" ) ngray = Normalization.equalizeHistograms(gray) # apply a gaussian blur to remove edge effects ngray = cv2.GaussianBlur(ngray, (3,3), 0) fout.write( ('\t'.join(map(str, [stats.min(ngray), stats.max(ngray), stats.median(ngray), stats.mean(ngray)]))) + "\t") for i in range(3): imp = img[:,:,i] fout.write( ('\t'.join(map(str, [stats.min(imp), stats.max(imp), stats.median(imp), stats.mean(imp)]))) + "\t" ) fout.write( str(fft.energy(gray)) + "\t" + str(fft.energy(ngray)) + "\t") if args.features: feats.detect_kp_ORB(ngray) fout.write( str(feats.numberKeyPoints()) + "\t" + str(feats.medianKeyPointSize()) + "\t" + str(feats.meanKeyPointSize()) + "\t") for i in range(15): fout.write( str(feats.numKeyPoints(i*10)) + "\t") else: fout.write("0\t0\t0\t"); for i in range(15): fout.write("0\t") for i in range(15): k=2*i+1 fout.write( str(lap.sum(ngray, k)) + "\t") for i in range(25): t2 = 10*i fout.write( str(edge.sumCanny(ngray, 1, t2)) + "\t") #edge.sumCanny(gray) # Contour detection ctr = Contours.contours(ngray) for i in range(5): threshold=50*i ctr.withCanny(1, threshold) if ctr.numberOfContours() == 0: fout.write( "0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t" ) else: try: fout.write( "\t".join(map(str, [ctr.numberOfContours(), ctr.numberOfClosedContours(), ctr.numberOfOpenContours(), ctr.totalContourArea(), cv2.contourArea(ctr.largestContourByArea()), ctr.totalPerimeterLength()])) + "\t") ctr.linelengths() fout.write( "\t".join(map(str, [ctr.maxLineLength(), ctr.meanLineLength(), ctr.medianLineLength(), ctr.modeLineLength()])) + "\t") except Exception as e: sys.stderr.write("There was an error calculating the contours for " + imgfile +": " + e.message + "\n") fout.write( "0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t" ) fout.write("\n")
''' A test suite written to test the image analysis code. All of these tests should pass''' import sys sys.path.append('../Modules/') import ImageIO from Analysis import * import os imageFile = 'test.jpg' if not os.path.exists(imageFile): sys.stderr.write("The test image file " + imageFile + " does not exist! Can't complete tests"); sys.exit(-1) image = ImageIO.cv2read(imageFile) grayscale = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) # test the statistics module print "The following tests are performed on the grayscale image:" print "\nTesting the stats class" s=Stats() print "Testing minimum: ", s.min(grayscale) print "Testing maximum: ", s.max(grayscale) print "Testing mean: ", s.mean(grayscale) print "Testing median: ", s.median(grayscale) print "\nTesting the fft class" f=FFT() print "Testing FFT: "
def setUp(self): imageFile = '../test/test.jpg' self.img = ImageIO.cv2read(imageFile)
def test_cv2read(self): img = ImageIO.cv2read(self.imageFile) tmpImg = cv2.imread(self.imageFile) equalityBool = (img == tmpImg).all() self.assertTrue(equalityBool)
sys.path.append('../Modules/') import cv2 import ImageIO import Normalization from matplotlib import pyplot as plt import numpy ''' A test program to make sure that the Normalization methods work. This normalizes the images, and displays them. ''' #test = 'test.jpg' test = "/home/redwards/Dropbox/ComputerVision/TestCode/test.png" im = ImageIO.cv2read(test) print im.shape print "Testing Tylers normalization" tn = Normalization.Tyler(im) print "Testing histogram equalization" he = Normalization.equalizeHistograms(im) heo = numpy.ones_like(im) heo[:,:,0]=he heo[:,:,1]=he heo[:,:,2]=he print "Simple normaliztion" nh = Normalization.simpleNorm(im)
import sys sys.path.append('../Modules/') import ImageIO from Analysis import * ''' A simple test whether the bgr_energy calculation works ''' im = sys.argv[1] img = ImageIO.cv2read(im) fft=FFT() for i in range(3): print "The energy for the ", i, " channel is ", fft.energy(img[:,:,i])
def setUp(self): imageFile = '../test/test.jpg' self.img = ImageIO.cv2read(imageFile) self.contours = contours(self.img)