Files
x04sa-es3/script/device/Image.py
gac-x04sa 4ce9f38134 Closedown
2018-10-30 16:10:23 +01:00

86 lines
3.1 KiB
Python

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()