Skip to content

Commit

Permalink
support --framerate in py_capture.py
Browse files Browse the repository at this point in the history
  • Loading branch information
Andrew Tridgell committed Mar 14, 2014
1 parent 44b670b commit 4c8c010
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 5 deletions.
3 changes: 2 additions & 1 deletion cuav/camera/chameleon.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
*/

#define _GNU_SOURCE
#define USE_LIBDC1394 0

#include <stdio.h>
#include <stdint.h>
Expand Down Expand Up @@ -625,7 +626,7 @@ chameleon_get_image_size_from_video_mode(struct chameleon_camera *camera, dc1394
return DC1394_FAILURE;
}

static dc1394error_t
dc1394error_t
chameleon_video_get_framerate(struct chameleon_camera *camera, dc1394framerate_t *framerate)
{
uint32_t value;
Expand Down
7 changes: 5 additions & 2 deletions cuav/camera/chameleon_util.c
Original file line number Diff line number Diff line change
Expand Up @@ -304,7 +304,7 @@ chameleon_camera_t *open_camera(bool colour_chameleon, uint8_t depth, uint16_t b

printf("Using camera with GUID %"PRIx64"\n", camera->guid);

camera_setup(camera, depth, brightness, 8);
camera_setup(camera, depth, brightness, 7);

return camera;

Expand Down Expand Up @@ -515,6 +515,9 @@ void camera_set_framerate(chameleon_camera_t *camera, uint8_t framerate)
} else {
rate = DC1394_FRAMERATE_1_875;
}
printf("Setting rate 0x%x\n", (unsigned)rate);
printf("Setting rate %u 0x%x\n", (unsigned)framerate, (unsigned)rate);
CHECK(chameleon_video_set_framerate(camera, rate));
rate = 0;
CHECK(chameleon_video_get_framerate(camera, &rate));
printf("Got rate %u 0x%x\n", (unsigned)framerate, (unsigned)rate);
}
1 change: 1 addition & 0 deletions cuav/camera/include/chameleon.h
Original file line number Diff line number Diff line change
Expand Up @@ -420,6 +420,7 @@ int chameleon_camera_reset(struct chameleon_camera *c);
int chameleon_video_set_iso_speed(struct chameleon_camera *camera, dc1394speed_t speed);
int chameleon_video_set_mode(struct chameleon_camera *camera, dc1394video_mode_t mode);
int chameleon_video_set_framerate(struct chameleon_camera *camera, dc1394framerate_t framerate);
dc1394error_t chameleon_video_get_framerate(struct chameleon_camera *camera, dc1394framerate_t *framerate);
int chameleon_capture_setup(struct chameleon_camera *c, uint32_t num_dma_buffers, uint32_t flags);
dc1394error_t
chameleon_feature_set_power(struct chameleon_camera *camera, dc1394feature_t feature, dc1394switch_t value);
Expand Down
1 change: 1 addition & 0 deletions cuav/camera/include/chameleon_dc1394.h
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#error "error, including dc1394.h"
#include <dc1394/dc1394.h>

#define chameleon_t dc1394_t
Expand Down
10 changes: 8 additions & 2 deletions cuav/camera/py_capture.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
#!/usr/bin/python

import chameleon, numpy, os, time, threading, Queue, cv, sys
import numpy, os, time, threading, Queue, cv, sys

from cuav.image import scanner
from cuav.lib import cuav_util
from cuav.camera import chameleon

from optparse import OptionParser
parser = OptionParser("py_capture.py [options]")
Expand All @@ -17,6 +18,7 @@
parser.add_option("--quality", type='int', default=95, help="compression quality")
parser.add_option("--brightness", type='int', default=100, help="auto-exposure brightness")
parser.add_option("--trigger", action='store_true', default=False, help="use triggering")
parser.add_option("--framerate", type='int', default=0, help="capture framerate Hz")
(opts, args) = parser.parse_args()

class capture_state():
Expand Down Expand Up @@ -48,6 +50,9 @@ def get_base_time():
h = chameleon.open(not opts.mono, opts.depth, opts.brightness)
print('camera is open')

if opts.framerate != 0:
chameleon.set_framerate(h, opts.framerate)

while frame_time is None:
try:
base_time = time.time()
Expand Down Expand Up @@ -153,10 +158,11 @@ def run_capture():
if opts.save and not opts.compress:
state.save_queue.put((base_time+frame_time, im, False))

print("Captured %s shutter=%f tdelta=%f ft=%f loss=%u qsave=%u qbayer=%u qcompress=%u scan=%u" % (
print("Captured %s shutter=%f tdelta=%f(%.2f) ft=%f loss=%u qsave=%u qbayer=%u qcompress=%u scan=%u" % (
cuav_util.frame_time(base_time+frame_time),
shutter,
frame_time - last_frame_time,
1.0/(frame_time - last_frame_time),
frame_time,
frame_loss,
state.save_queue.qsize(),
Expand Down

0 comments on commit 4c8c010

Please sign in to comment.