Exemplo n.º 1
0
    def run(self):
        self.start_time = time.time()
        duty = self.D0
        duties = []
        for step in range(self.STEPS):
            duties.append(duty)
            self.s.change_duty(duty)
            if step % self.duty_interval == 0:
                if duty > self.D1:
                    duty -= 1
            frame = self.get_frame()
            # if step % self.IMSAVE_INTERVAL == 0:
            images.save(frame, f"{self.im_save}/{step}.png")

            circles = self.get_circles(frame)
            self.x.append(circles[0, 0])
            self.x.append(circles[1, 0])

            self.update_image(circles, frame)
            self.update_hist()
            self.update_plot()
            self.update_duty_plot(duties)

            self.fig.canvas.flush_events()
            self.fig.canvas.start_event_loop(0.5)

            if step % self.DATASAVE_INTERVAL == 0:
                np.savetxt(self.data_save, self.x)

            if step % 20 == 0:
                plt.savefig(self.plot_save, dpi=600)
Exemplo n.º 2
0
    def run(self):
        self.start_time = time.time()

        for step in range(self.STEPS):
            frame = self.get_frame()
            if step % self.IMSAVE_INTERVAL == 0:
                images.save(frame, f"{self.im_save}/{step}.png")

            circles = self.get_circles(frame)
            self.x.append(circles[0])
            self.y.append(circles[1])
            # self.x.append(circles[1, 0])

            self.update_image(circles, frame)
            # self.update_hist()
            self.update_plot()

            self.fig.canvas.flush_events()
            self.fig.canvas.start_event_loop(0.5)

            if step % self.DATASAVE_INTERVAL == 0:
                np.savetxt(self.data_save_x, self.x)
                np.savetxt(self.data_save_y, self.y)

            if step % 20 == 0:
                plt.savefig(self.plot_save, dpi=600)
 def im(self):
     im = self.cam.get_frame()
     for f in range(10):
         im = self.cam.get_frame()
     im = images.crop_and_mask(im, self.crop, self.mask)
     im = images.bgr_to_gray(im)
     images.save(im, self.log_direc + '{}_original.png'.format(self.i))
     return im
Exemplo n.º 4
0
 def mean_im(self):
     ims = []
     for f in range(8):
         im = self.cam.get_frame()
         im = images.crop_and_mask(im, self.crop, self.mask)
         im = images.bgr_to_gray(im)
         ims.append(im)
     images.save(ims[0], self.log_direc + '{}_original.png'.format(self.i))
     mean_im = images.mean(ims)
     # mean_im = images.mask(mean_im, ring_mask)
     images.save(mean_im, self.log_direc + '{}_mean.png'.format(self.i))
     return mean_im
Exemplo n.º 5
0
 def find_center(self, im):
     im0 = im.copy()
     im = images.threshold(im, 80)
     im = images.opening(im, (6, 6))
     center = images.center_of_mass(im)
     im0 = images.gray_to_bgr(im0)
     im0 = images.draw_circle(im0, center[0], center[1], 5)
     im = images.gray_to_bgr(im)
     im = images.draw_circle(im, center[0], center[1], 5)
     images.save(images.hstack(im, im0),
                 self.log_direc + '{}.png'.format(self.i))
     self.i += 1
     return center
Exemplo n.º 6
0
 def mean_im(self):
     ims = []
     for f in range(8):
         im = ~self.cam.get_frame()
         im = images.crop_and_mask(im, self.crop, self.mask)
         # if f == 0:
         #     ring_mask = images.inrange(images.bgr_to_lab(im), (0, 113, 0),
         #                                (255, 152, 255))
         im = images.bgr_to_gray(im)
         ims.append(im)
     images.save(ims[0], self.log_direc + '{}_original.png'.format(self.i))
     mean_im = images.mean(ims)
     # mean_im = images.mask(mean_im, ring_mask)
     images.save(mean_im, self.log_direc + '{}_mean.png'.format(self.i))
     return mean_im
Exemplo n.º 7
0
def check(filename):
    core_name = os.path.splitext(filename)[0]
    vid_name = core_name + '.MP4'
    data_name = core_name + '.hdf5'
    out_name = core_name + '_check.png'
    data = dataframes.DataStore(data_name)
    crop = data.metadata['crop']
    vid = video.ReadVideo(vid_name)
    print(vid_name)
    frames = np.arange(4)*vid.num_frames//4
    ims = [images.crop(vid.read_frame(f), crop) for f in frames]
    circles = [data.get_info(f, ['x', 'y', 'r']) for f in frames]
    new_ims = [images.draw_circles(im, c) for im, c in zip(ims, circles)]
    out = images.vstack(images.hstack(new_ims[0], new_ims[1]),
                        images.hstack(new_ims[2], new_ims[3]))
    images.save(out, out_name)
    def find_center(self, im):
        im0 = im.copy()
        im = images.gaussian_blur(im, (5, 5))
        circles = trackpy.locate(im, 5)
        center = circles[['x', 'y']].values.mean(axis=0)

        im0 = images.gray_to_bgr(im0)
        im0 = images.draw_circle(im0, center[0], center[1], 5)
        im1 = images.gray_to_bgr(im)
        im1 = images.draw_circle(im1, center[0], center[1], 5)
        im2 = images.gray_to_bgr(im)
        im2 = images.draw_circles(im2, circles[['x', 'y', 'size']].values)
        images.save(images.hstack(im1, im0, im2),
                    self.log_direc + '{}.png'.format(self.i))
        self.i += 1
        return center
Exemplo n.º 9
0
from particletracking import dataframes
from labvision import video, images
import numpy as np

import filehandling

file_store = "/media/data/Data/FirstOrder/Hysterisis/FlatPlate/Trial2/0.2_up_1.hdf5"
file_vid = "/media/data/Data/FirstOrder/Hysterisis/FlatPlate/Trial2/0.2_up_1.MP4"

metadata = dataframes.load_metadata(file_store)
vid = video.ReadVideo(file_vid)

box = metadata['crop']

frame = vid.read_frame(vid.num_frames - 1)
frame = images.crop(frame, box)

xmin = 750
xmax = 1250
ymin = 750
ymax = 1250

vertices = np.array([[xmin, ymin], [xmin, ymax], [xmax, ymax], [xmax, ymin]])

frame = images.draw_polygon(frame, vertices, thickness=3)
images.save(
    frame,
    "/media/data/Data/FirstOrder/Hysterisis/FlatPlate/Trial2/HexagonFigures/box_end.png"
)
images.display(frame)
Exemplo n.º 10
0
fig.show()

import os

if os.path.exists(data_save):
    x = np.loadtxt(data_save).tolist()
else:
    x = []
    t = []
i = 0
start_time = time.time()
for step in range(3000):
    for repeat in range(20):
        frame = get_frame()
        if i % 5 == 0:
            images.save(cam.get_frame(), f"{im_save}/{i}.png")
        circles = get_circles(frame)
        x.append(circles[0])
        current_time = time.time() - start_time
        c1.remove()
        c1 = get_plot_circles(circles)
        ax[0].add_artist(c1)
        im_artist.set_data(frame)
        ax[0].set_title(f"Elapsed Time: {current_time:.1f}, data: {len(x)//2}")
        freq, _ = np.histogram(x, bins=bins)
        for rect, h, in zip(hist, freq):
            rect.set_height(h)
        ax[1].set_ylim([0, max(freq)])
        ax[2].set_ylim([0, len(x)])
        plot.set_xdata(x)
        plot.set_ydata(np.arange(len(x)))
p1 = [333, 1318]
p2 = [1784, 528]
midpoint = np.array([p1[0] - p2[0], p1[1] - p2[1]])
h = h + midpoint[1]
x = x + midpoint[0]

m = (p2[1] - p1[1]) / (p2[0] - p1[0])
a = -atan(m)
print(a)
points = np.vstack((x, h)).T
print(points.shape)
points = rotate_points(points, midpoint, -a)
print(points[0])
print(points[1])

points[:, 0] += -points[0, 0] + p1[0]
points[:, 1] += -points[0, 1] + p1[1]

points = np.int32(points)
# points = points.reshape((points.shape[0], 1, points.shape[1]))
# lines = [((a[0], b[0]), (a[1], b[1])) for a, b in zip(points[1:], points[:-1])]
# print(lines)
im = cv2.polylines(im, [points], False, images.YELLOW, 10)
im = images.rotate(im, 30)
# im = images.draw_contours(im, [points], images.YELLOW, 10)
images.display(im)
images.save(im, direc + 'boundary.jpeg')
# plt.savefig(direc+'boundary.jpeg', quality=95, dpi=300)
# plt.show()
Exemplo n.º 12
0
vid = video.ReadVideo(vid_file)
metadata = dataframes.load_metadata(data_file)

print(metadata['boundary'].shape)

start = vid.read_frame(0)
middle = vid.read_frame(vid.num_frames // 2)
end = vid.read_frame(vid.num_frames - 1)

start = crop_then_mask(start)
middle = crop_then_mask(middle)
end = crop_then_mask(end)

save_direc = "/media/data/Data/FirstOrder/Hysterisis/5Repeats/RedTrayDense/HexagonFigures"

images.save(start, f'{save_direc}/start.png')
images.save(middle, f'{save_direc}/middle.png')
images.save(end, f'{save_direc}/end.png')

new_corners = get_crop_region(start, metadata['boundary'])

# start = images.draw_polygon(start, new_corners, color=images.GREEN, thickness=8)
# middle = images.draw_polygon(middle, new_corners, color=images.GREEN, thickness=8)
# end = images.draw_polygon(end, new_corners, color=images.GREEN, thickness=8)
new_corners = np.hstack((new_corners, np.ones((6, 1))*3))
start = images.draw_circles(start, new_corners, color=images.GREEN)
middle = images.draw_circles(middle, new_corners, color=images.GREEN)
end = images.draw_circles(end, new_corners, color=images.GREEN)

images.save(start, f'{save_direc}/start_hex.png')
images.save(middle, f'{save_direc}/middle_hex.png')
Exemplo n.º 13
0
        with open(save_direc + 'bbox.txt', 'w') as f:
            f.writelines([
                'BBOX xmin, xmax, ymin, ymax',
                str(bbox.xmin),
                str(bbox.xmax),
                str(bbox.ymin),
                str(bbox.ymax)
            ])
        frame = images.draw_polygon(
            frame,
            np.array([[bbox.xmin, bbox.ymin], [bbox.xmin, bbox.ymax],
                      [bbox.xmax, bbox.ymax], [bbox.xmax, bbox.ymin]],
                     dtype=np.float32),
            color=images.RED,
            thickness=2)
        images.save(frame, save_direc + 'im.png')

    down_df = down_data.df[down_data.df.x.between(bbox.xmin, bbox.xmax)]
    down_df = down_df[down_df.y.between(bbox.ymin, bbox.ymax)]

    up_df = up_data.df[up_data.df.x.between(bbox.xmin, bbox.xmax)]
    up_df = up_df[up_df.y.between(bbox.ymin, bbox.ymax)]

    # down_duty, down_density = density_duty_mapped(down_df)
    # up_duty, up_density = density_duty_mapped(up_df)

    down_duty, down_density = density_duty_mapped(down_df)
    up_duty, up_density = density_duty_mapped(up_df)

    # np.savetxt(save_direc+'duty_down_rate={}'.format(rate),
    #            down_duty)
Exemplo n.º 14
0
from labequipment import shaker
from labvision import camera, images
import time

s = shaker.Shaker()
cam_num = camera.guess_camera_number()
cam = camera.Camera(cam_num=cam_num)

save_dir = "/media/data/Data/August2020/balance_test/"

for i in range(20):
    s.ramp(650, 600, 0.2)
    im = cam.get_frame()
    images.save(im, save_dir + '{}.png'.format(i))
    time.sleep(5)
Exemplo n.º 15
0
 def save_img(self):
     home = os.getenv("HOME")
     filename, ok = QFileDialog.getSaveFileName(self, "", home + "/Pictures/",self.tr("*.jpg;; *.png;; *.tiff"))
     if filename:
         img = self.readvid.read_frame(n=self.framenum_slider.value)
         save(img, filename)