#!/usr/bin/env python
import Queue
import threading
import mahotas
import time
import sys
# this is the list where
# the final data goes
f = list()
# create a Queue
queue = Queue.Queue()
# the code that needs to be executed
# we override the init function in order to pass parameters to the threads
class MyThread( threading.Thread ):
def __init__( self, f, queue ):
self.f = f
self.queue = queue
threading.Thread.__init__( self )
def run( self ):
while True:
task = self.queue.get()
self.f.append( mahotas.features.haralick( task ) )
self.queue.task_done()
# reads the image and converts it to a numpy int ndarray
img = mahotas.imread( sys.argv[1] )
# chip size dimensions
chipx = int( sys.argv[2] )
chipy = int( sys.argv[3] )
# figure out image size
imgx, imgy, imgz = img.shape
# the number of chips in each direction
nbxchips = imgx/chipx
nbychips = imgy/chipy
start = time.time()
# create some threads
for i in range( 3 ):
t = MyThread( f, queue )
t.setDaemon( True )
t.start()
# put chips into the queue
for i in range( nbxchips ):
for j in range( nbychips ):
queue.put( img[i*chipx:(i+1)*chipx,j*chipy:(j+1)*chipy,:] )
# wait for all the work to finish
queue.join()
print 'Elapsed Time: %s' % ( time.time() - start )
print len( f )
Thursday, March 17, 2011
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment