from shutil import copyfile def img_get_int(fname, header, width, height, depth, x1,y1,x2,y2, bx1,by1,bx2,by2 ): # read actual image file import numpy img = numpy.fromfile(fname, dtype=numpy.uint32) img.shape = height, width # signal roi area_I = ( x2 - x1 + 1) * ( y2 - y1 + 1) I_sum = img[y1:y2, x1:x2].sum() thresh1_count = len(numpy.where(img>thres1)[0]) thresh2_count = len(numpy.where(img>thres2)[0]) thresh3_count = len(numpy.where(img>thres3)[0]) thresh4_count = len(numpy.where(img>thres4)[0]) # background roi I_sum_bgr = img[by1:by2, bx1:bx2].sum() area_bgr= (bx2 - bx1 + 1) * (by2 - by1 + 1) return (I_sum, area_I, thresh1_count, thresh2_count, thresh3_count, thresh4_count, I_sum_bgr, area_bgr) class Image(DeviceBase, Readable): def __init__(self, name, pixel): DeviceBase.__init__(self, name) self.pixel = pixel self.roi = [0,0, self.pixel.PIX_XDIM-1, self.pixel.PIX_XDIM] self.broi = [0,0, self.pixel.PIX_XDIM-1, self.pixel.PIX_YDIM] def get_int(self, threshold1= None, threshold2= None, threshold3= None, threshold4= None, filename = None): if threshold1 is None: threshold1 = self.pixel.PIX_THRESH1 if threshold2 is None: threshold2 = self.pixel.PIX_THRESH2 if threshold3 is None: threshold3 = self.pixel.PIX_THRESH3 if threshold4 is None: threshold4 = self.pixel.PIX_THRESH4 if filename is None: filename = self.pixel.get_image_filename() tmp_file = self.pixel.image_root_folder + "tmp/spec_image_info.dat" copyfile(filename, tmp_file) ret = img_get_int(tmp_file, self.pixel.IMAGE_HEADER_LENGTH, self.pixel.PIX_XDIM, self.pixel.PIX_YDIM,self.pixel.PIX_COLOR_DEPTH, \ self.roi[0], self.roi[1], self.roi[2], self.roi[3], self.broi[0], self.broi[1], self.broi[2], self.broi[3]) #unixCommand = "%s%s %s %d %d %d %d -median 30" % (commandDir,"/bin/image_get_int.py","/tmp/spec_image_info.dat", \ # threshold1, threshold2, threshold3, threshold4) #ret = run("image_get_int.py", [None, tmp_file, threshold1, threshold2, threshold3, threshold4, "-median", 30]) #I_sum, area_I, thresh1_count, thresh2_count, thresh3_count, thresh4_count, I_sum_bgr, area_bgr) = ret print ret return I_sum """ IMAGE_I_SUM = "" IMAGE_AREA_SIG = "" IMAGE_THRESH1_COUNT = "" IMAGE_THRESH2_COUNT = "" IMAGE_THRESH3_COUNT = "" IMAGE_I_BG = "" IMAGE_AREA_BG = "" } if (IMAGE_AREA_BG > 0){ IMAGE_I_SIG = IMAGE_I_SUM - ((IMAGE_I_BG / IMAGE_AREA_BG) * IMAGE_AREA_SIG) } else { IMAGE_I_SIG = IMAGE_I_SUM } """ def read(self): return self.get_int() add_device( Image("image", pixel), True) print image.read()