Module: Framegrabber
- Defined in:
- lib/framegrabber.rb
Class Method Summary collapse
Class Method Details
.grab_frame ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'ext/grab_frame_ext/grab_frame_ext.cpp', line 39
static VALUE grab_frame(VALUE _self) {
Mat frame = grab();
VALUE result = rb_ary_new_capa(frame.cols);
if(frame.empty()) {
return result;
}
int i = 0, j = 0;
for(i=0; i<frame.rows; ++i) {
VALUE row = rb_ary_new_capa(frame.cols);
for(j=0; j<frame.cols; j++) {
VALUE pixel = rb_ary_new_capa(3);
unsigned char * p = frame.ptr(i, j); // Y first, X after
rb_ary_store(pixel, 2, ULL2NUM(p[2])); // R
rb_ary_store(pixel, 1, ULL2NUM(p[1])); // G
rb_ary_store(pixel, 0, ULL2NUM(p[0])); // B
rb_ary_store(row, j, pixel);
}
rb_ary_store(result, i, row);
}
return result;
}
|
.open(deviceID) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'ext/grab_frame_ext/grab_frame_ext.cpp', line 9
static VALUE open(VALUE _self, VALUE deviceID) {
int camID = NUM2INT(deviceID);
Mat frame;
cap.open(camID);
cap.read(frame);
sleep(1);
if (!cap.isOpened()) {
rb_raise(rb_eRuntimeError, "Unable to open camera %d", camID);
}
return Qnil;
}
|
.release ⇒ Object
23 24 25 26 |
# File 'ext/grab_frame_ext/grab_frame_ext.cpp', line 23 static VALUE release(VALUE _self) { cap.release(); return Qnil; } |