mirror of
https://github.com/ruby-opencv/ruby-opencv
synced 2023-03-27 23:22:12 -04:00
Added Dnn::Layer, more Ruby-ish code, etc.
This commit is contained in:
parent
46c5a08025
commit
801d1e8694
9 changed files with 218 additions and 90 deletions
|
@ -5,6 +5,7 @@
|
|||
#include "size.hpp"
|
||||
#include "scalar.hpp"
|
||||
#include "dnn_net.hpp"
|
||||
#include "dnn_layer.hpp"
|
||||
#include "error.hpp"
|
||||
|
||||
// https://docs.opencv.org/trunk/d6/d0f/group__dnn.html#ga29d0ea5e52b1d1a6c2681e3f7d68473a
|
||||
|
@ -59,61 +60,61 @@ namespace rubyopencv {
|
|||
return Mat::mat2obj(b);
|
||||
}
|
||||
|
||||
// Net readNetFromCaffe(const String &prototxt, const String &caffeModel = String());
|
||||
VALUE rb_read_net_from_caffe(VALUE self, VALUE prototxt, VALUE caffe_model) {
|
||||
cv::dnn::Net *net = NULL;
|
||||
|
||||
try {
|
||||
net = new cv::dnn::Net(cv::dnn::readNetFromCaffe(StringValueCStr(prototxt), StringValueCStr(caffe_model)));
|
||||
} catch(cv::Exception& e) {
|
||||
delete net;
|
||||
Error::raise(e);
|
||||
}
|
||||
|
||||
return Dnn::Net::net2obj(net);
|
||||
}
|
||||
|
||||
// Net readNetFromTorch(const String &model, bool isBinary)
|
||||
VALUE rb_read_net_from_tensorflow(VALUE self, VALUE model) {
|
||||
cv::dnn::Net *net = NULL;
|
||||
|
||||
try {
|
||||
net = new cv::dnn::Net(cv::dnn::readNetFromTensorflow(StringValueCStr(model)));
|
||||
} catch(cv::Exception& e) {
|
||||
delete net;
|
||||
Error::raise(e);
|
||||
}
|
||||
|
||||
return Dnn::Net::net2obj(net);
|
||||
}
|
||||
|
||||
// Net readNetFromTorch(const String &model, bool isBinary)
|
||||
VALUE rb_read_net_from_torch(VALUE self, VALUE model) {
|
||||
cv::dnn::Net *net = NULL;
|
||||
|
||||
try {
|
||||
net = new cv::dnn::Net(cv::dnn::readNetFromTorch(StringValueCStr(model)));
|
||||
} catch(cv::Exception& e) {
|
||||
delete net;
|
||||
Error::raise(e);
|
||||
}
|
||||
|
||||
return Dnn::Net::net2obj(net);
|
||||
}
|
||||
|
||||
// Net readNetFromDarknet(const String &cfgFile, const String &darknetModel /*= String()*/)
|
||||
VALUE rb_read_net_from_darknet(VALUE self, VALUE cfg_file, VALUE darknet_model) {
|
||||
cv::dnn::Net *net = NULL;
|
||||
|
||||
try {
|
||||
net = new cv::dnn::Net(cv::dnn::readNetFromDarknet(StringValueCStr(cfg_file), StringValueCStr(darknet_model)));
|
||||
} catch(cv::Exception& e) {
|
||||
delete net;
|
||||
Error::raise(e);
|
||||
}
|
||||
|
||||
return Dnn::Net::net2obj(net);
|
||||
}
|
||||
// // Net readNetFromCaffe(const String &prototxt, const String &caffeModel = String());
|
||||
// VALUE rb_read_net_from_caffe(VALUE self, VALUE prototxt, VALUE caffe_model) {
|
||||
// cv::dnn::Net *net = NULL;
|
||||
//
|
||||
// try {
|
||||
// net = new cv::dnn::Net(cv::dnn::readNetFromCaffe(StringValueCStr(prototxt), StringValueCStr(caffe_model)));
|
||||
// } catch(cv::Exception& e) {
|
||||
// delete net;
|
||||
// Error::raise(e);
|
||||
// }
|
||||
//
|
||||
// return Dnn::Net::net2obj(net);
|
||||
// }
|
||||
//
|
||||
// // Net readNetFromTorch(const String &model, bool isBinary)
|
||||
// VALUE rb_read_net_from_tensorflow(VALUE self, VALUE model) {
|
||||
// cv::dnn::Net *net = NULL;
|
||||
//
|
||||
// try {
|
||||
// net = new cv::dnn::Net(cv::dnn::readNetFromTensorflow(StringValueCStr(model)));
|
||||
// } catch(cv::Exception& e) {
|
||||
// delete net;
|
||||
// Error::raise(e);
|
||||
// }
|
||||
//
|
||||
// return Dnn::Net::net2obj(net);
|
||||
// }
|
||||
//
|
||||
// // Net readNetFromTorch(const String &model, bool isBinary)
|
||||
// VALUE rb_read_net_from_torch(VALUE self, VALUE model) {
|
||||
// cv::dnn::Net *net = NULL;
|
||||
//
|
||||
// try {
|
||||
// net = new cv::dnn::Net(cv::dnn::readNetFromTorch(StringValueCStr(model)));
|
||||
// } catch(cv::Exception& e) {
|
||||
// delete net;
|
||||
// Error::raise(e);
|
||||
// }
|
||||
//
|
||||
// return Dnn::Net::net2obj(net);
|
||||
// }
|
||||
//
|
||||
// // Net readNetFromDarknet(const String &cfgFile, const String &darknetModel /*= String()*/)
|
||||
// VALUE rb_read_net_from_darknet(VALUE self, VALUE cfg_file, VALUE darknet_model) {
|
||||
// cv::dnn::Net *net = NULL;
|
||||
//
|
||||
// try {
|
||||
// net = new cv::dnn::Net(cv::dnn::readNetFromDarknet(StringValueCStr(cfg_file), StringValueCStr(darknet_model)));
|
||||
// } catch(cv::Exception& e) {
|
||||
// delete net;
|
||||
// Error::raise(e);
|
||||
// }
|
||||
//
|
||||
// return Dnn::Net::net2obj(net);
|
||||
// }
|
||||
|
||||
void init() {
|
||||
VALUE opencv = rb_define_module("Cv");
|
||||
|
@ -121,12 +122,13 @@ namespace rubyopencv {
|
|||
rb_module = rb_define_module_under(opencv, "Dnn");
|
||||
|
||||
rb_define_singleton_method(rb_module, "blob_from_image", RUBY_METHOD_FUNC(rb_blob_from_image), -1);
|
||||
rb_define_singleton_method(rb_module, "read_net_from_caffe", RUBY_METHOD_FUNC(rb_read_net_from_caffe), 2);
|
||||
rb_define_singleton_method(rb_module, "read_net_from_tensorflow", RUBY_METHOD_FUNC(rb_read_net_from_tensorflow), 1);
|
||||
rb_define_singleton_method(rb_module, "read_net_from_torch", RUBY_METHOD_FUNC(rb_read_net_from_torch), 1);
|
||||
rb_define_singleton_method(rb_module, "read_net_from_darknet", RUBY_METHOD_FUNC(rb_read_net_from_darknet), 2);
|
||||
// rb_define_singleton_method(rb_module, "read_net_from_caffe", RUBY_METHOD_FUNC(rb_read_net_from_caffe), 2);
|
||||
// rb_define_singleton_method(rb_module, "read_net_from_tensorflow", RUBY_METHOD_FUNC(rb_read_net_from_tensorflow), 1);
|
||||
// rb_define_singleton_method(rb_module, "read_net_from_torch", RUBY_METHOD_FUNC(rb_read_net_from_torch), 1);
|
||||
// rb_define_singleton_method(rb_module, "read_net_from_darknet", RUBY_METHOD_FUNC(rb_read_net_from_darknet), 2);
|
||||
|
||||
Dnn::Net::init(rb_module);
|
||||
Dnn::Layer::init(rb_module);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue