Skip to content
This repository was archived by the owner on Oct 18, 2023. It is now read-only.

Commit 4e5c901

Browse files
author
Johnson Su
committed
Added dnn readNetFromDarknet function binding and modified ReadNetFromTensorflow for config parameter
1 parent 18d2cff commit 4e5c901

File tree

4 files changed

+91
-34
lines changed

4 files changed

+91
-34
lines changed

cc/modules/dnn/dnn.cc

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
NAN_MODULE_INIT(Dnn::Init) {
1212
Net::Init(target);
1313

14+
Nan::SetMethod(target, "readNetFromDarknet", readNetFromDarknet);
15+
Nan::SetMethod(target, "readNetFromDarknetAsync", readNetFromDarknetAsync);
1416
Nan::SetMethod(target, "readNetFromTensorflow", ReadNetFromTensorflow);
1517
Nan::SetMethod(target, "readNetFromTensorflowAsync", ReadNetFromTensorflowAsync);
1618
Nan::SetMethod(target, "readNetFromCaffe", ReadNetFromCaffe);
@@ -24,6 +26,22 @@ NAN_MODULE_INIT(Dnn::Init) {
2426
#endif
2527
};
2628

29+
NAN_METHOD(Dnn::readNetFromDarknet)
30+
{
31+
FF::SyncBinding(
32+
std::make_shared<DnnBindings::readNetFromDarknetWorker>(),
33+
"readNetFromDarknet",
34+
info);
35+
}
36+
37+
NAN_METHOD(Dnn::readNetFromDarknetAsync)
38+
{
39+
FF::AsyncBinding(
40+
std::make_shared<DnnBindings::readNetFromDarknetWorker>(),
41+
"readNetFromDarknetAsync",
42+
info);
43+
}
44+
2745
NAN_METHOD(Dnn::ReadNetFromTensorflow) {
2846
FF::SyncBinding(
2947
std::make_shared<DnnBindings::ReadNetFromTensorflowWorker>(),

cc/modules/dnn/dnn.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ class Dnn {
1111
public:
1212
static NAN_MODULE_INIT(Init);
1313

14+
static NAN_METHOD(readNetFromDarknet);
15+
static NAN_METHOD(readNetFromDarknetAsync);
1416
static NAN_METHOD(ReadNetFromTensorflow);
1517
static NAN_METHOD(ReadNetFromTensorflowAsync);
1618
static NAN_METHOD(ReadNetFromCaffe);

cc/modules/dnn/dnnBindings.h

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,47 @@
55

66
namespace DnnBindings {
77

8+
struct readNetFromDarknetWorker : public CatchCvExceptionWorker{
9+
public:
10+
std::string cfgFile;
11+
std::string darknetModelFile = "";
12+
13+
cv::dnn::Net net;
14+
15+
std::string executeCatchCvExceptionWorker() {
16+
net = cv::dnn::readNetFromDarknet(cfgFile, darknetModelFile);
17+
if (net.empty()) {
18+
return std::string("failed to cfgFile: " + cfgFile + ", darknetModelFile: " + darknetModelFile).data();
19+
}
20+
return "";
21+
}
22+
23+
v8::Local<v8::Value> getReturnValue() {
24+
return Net::Converter::wrap(net);
25+
}
26+
27+
bool unwrapRequiredArgs(Nan::NAN_METHOD_ARGS_TYPE info) {
28+
return (
29+
StringConverter::arg(0, &cfgFile, info));
30+
}
31+
32+
bool unwrapOptionalArgs(Nan::NAN_METHOD_ARGS_TYPE info) {
33+
return (
34+
StringConverter::optArg(1, &darknetModelFile, info));
35+
}
36+
};
37+
838
struct ReadNetFromTensorflowWorker : public CatchCvExceptionWorker {
939
public:
1040
std::string modelFile;
41+
std::string configFile = "";
1142

1243
cv::dnn::Net net;
1344

1445
std::string executeCatchCvExceptionWorker() {
15-
net = cv::dnn::readNetFromTensorflow(modelFile);
46+
net = cv::dnn::readNetFromTensorflow(modelFile, configFile);
1647
if (net.empty()) {
17-
return std::string("failed to load net: " + modelFile).data();
48+
return std::string("failed to load net: " + modelFile + "failed to load config: " + configFile).data();
1849
}
1950
return "";
2051
}
@@ -25,7 +56,13 @@ namespace DnnBindings {
2556

2657
bool unwrapRequiredArgs(Nan::NAN_METHOD_ARGS_TYPE info) {
2758
return (
28-
StringConverter::arg(0, &modelFile, info)
59+
StringConverter::arg(0, &modelFile, info)
60+
);
61+
}
62+
63+
bool unwrapOptionalArgs(Nan::NAN_METHOD_ARGS_TYPE info) {
64+
return (
65+
StringConverter::optArg(1, &configFile, info)
2966
);
3067
}
3168
};

package-lock.json

Lines changed: 31 additions & 31 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)