예제 #1
0
 def handleNewFrame(self, new_frame):
     sliced_data = self.sliceFrame(new_frame)
     self.newFrame.emit(frame.Frame(sliced_data,
                                    new_frame.frame_number,
                                    self.x_pixels,
                                    self.y_pixels,
                                    self.camera_name))
예제 #2
0
    def run(self):
        
        # Pause a random amount of time on start. 
        time.sleep(random.expovariate(1.0/self.pause_time))
        
        self.running = True
        self.thread_started = True
        while(self.running):
            aframe = frame.Frame(numpy.roll(self.fake_frame,
                                            int(self.frame_number * self.parameters.get("roll"))),
                                 self.frame_number,
                                 self.fake_frame_size[0],
                                 self.fake_frame_size[1],
                                 self.camera_name)
            self.frame_number += 1

            if self.film_length is not None:
                if (self.frame_number == self.film_length):
                    self.running = False

            # Emit new data signal.
            self.newData.emit([aframe])

            # Sleep if we're still running.
            if self.running:
                self.msleep(int(1000.0 * self.parameters.get("exposure_time")))
예제 #3
0
    def handleNewFrame(self, new_frame):
        sliced_data = self.sliceFrame(new_frame)

        if (new_frame.frame_number % self.cycle_length) in self.capture_frames:
            self.newFrame.emit(
                frame.Frame(sliced_data, self.frame_number, self.x_pixels,
                            self.y_pixels, self.camera_name))
            self.frame_number += 1
예제 #4
0
    def handleNewFrame(self, new_frame):
        sliced_data = self.sliceFrame(new_frame)

        if self.average_frame is None:
            self.average_frame = sliced_data.astype(numpy.uint32)
        else:
            self.average_frame += sliced_data
        self.counts += 1

        if (self.counts == self.frames_to_average):
            average_frame = self.average_frame / self.frames_to_average
            self.newFrame.emit(
                frame.Frame(average_frame.astype(numpy.uint16),
                            self.frame_number, self.x_pixels, self.y_pixels,
                            self.camera_name))
            self.average_frame = None
            self.counts = 0
            self.frame_number += 1
예제 #5
0
    def run(self):
        self.running = True
        self.thread_started = True
        while (self.running):
            aframe = frame.Frame(
                numpy.roll(
                    self.fake_frame,
                    int(self.frame_number * self.parameters.get("roll"))),
                self.frame_number, self.fake_frame_size[0],
                self.fake_frame_size[1], self.camera_name)
            self.frame_number += 1

            if self.film_length is not None:
                if (self.frame_number == self.film_length):
                    self.running = False

            # Emit new data signal.
            self.newData.emit([aframe])
            self.msleep(int(1000.0 * self.parameters.get("exposure_time")))
예제 #6
0
    def run(self):
        #
        # Note: The order is important here, we need to start the camera and
        #       only then set self.running. Otherwise HAL might think the
        #       camera is running when it is not.
        #
        self.camera.startAcquisition()
        self.running = True
        self.thread_started = True
        while(self.running):

            # Get data from camera and create frame objects.
            self.camera_mutex.lock()
            [frames, frame_size] = self.camera.getFrames()
            self.camera_mutex.unlock()

            # Check if we got new frame data.
            if (len(frames) > 0):

                # Create frame objects.
                frame_data = []
                for cam_frame in frames:
                    aframe = frame.Frame(cam_frame.getData(),
                                         self.frame_number,
                                         frame_size[0],
                                         frame_size[1],
                                         self.camera_name)
                    frame_data.append(aframe)
                    self.frame_number += 1

                    if self.film_length is not None:                    
                        if (self.frame_number == self.film_length):
                            self.running = False
                            
                # Emit new data signal.
                self.newData.emit(frame_data)
            self.msleep(5)

        self.camera.stopAcquisition()
예제 #7
0

#
# Testing
#

if (__name__ == "__main__"):

    import numpy
    import time

    import storm_control.hal4000.camera.frame as frame

    image_x = 512
    image_y = 512
    aframe = frame.Frame(numpy.ones((image_x, image_y), dtype=numpy.uint16), 0,
                         image_x, image_y, "camera1", True)

    repeats = 200
    start = time.time()
    for i in range(repeats):
        imageGradient(aframe)
    end = time.time()
    print("Time to process an image: ", ((end - start) / repeats), " seconds")

#
# The MIT License
#
# Copyright (c) 2013 Zhuang Lab, Harvard University
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
예제 #8
0

# testing
if (__name__ == "__main__"):

    import storm_control.hal4000.camera.frame as frame

    import numpy
    import time

    initialize()

    image_x = 1024
    image_y = 1024

    a_frame = frame.Frame(numpy.ones((image_x, image_y), dtype=numpy.uint16),
                          0, image_x, image_y, "na")

    repeats = 100
    start = time.time()
    for i in range(repeats):
        [x, y, n] = findObjects(a_frame, 100)
        if ((i % 10) == 0):
            print(i, n)
    end = time.time()
    print("Time to process an image: ", ((end - start) / repeats), " seconds")

#
# The MIT License
#
# Copyright (c) 2013 Zhuang Lab, Harvard University
#