Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
27a4e370
Commit
27a4e370
authored
Sep 17, 2018
by
Alexander Alekhin
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #12559 from dkurt:dnn_remove_usrtype1
parents
b4fd3e86
7d755263
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
38 additions
and
18 deletions
+38
-18
torch_importer.cpp
modules/dnn/src/torch/torch_importer.cpp
+38
-18
No files found.
modules/dnn/src/torch/torch_importer.cpp
View file @
27a4e370
...
...
@@ -74,6 +74,18 @@ enum LuaType
LEGACY_TYPE_RECUR_FUNCTION
=
7
};
// We use OpenCV's types to manage CV_ELEM_SIZE.
enum
TorchType
{
TYPE_DOUBLE
=
CV_64F
,
TYPE_FLOAT
=
CV_32F
,
TYPE_BYTE
=
CV_8U
,
TYPE_CHAR
=
CV_8S
,
TYPE_SHORT
=
CV_16S
,
TYPE_INT
=
CV_32S
,
TYPE_LONG
=
CV_32SC2
};
template
<
typename
T
>
static
String
toString
(
const
T
&
v
)
{
...
...
@@ -203,19 +215,19 @@ struct TorchImporter
String
typeStr
=
str
.
substr
(
strlen
(
prefix
),
str
.
length
()
-
strlen
(
prefix
)
-
strlen
(
suffix
));
if
(
typeStr
==
"Double"
)
return
CV_64F
;
return
TYPE_DOUBLE
;
else
if
(
typeStr
==
"Float"
||
typeStr
==
"Cuda"
)
return
CV_32F
;
return
TYPE_FLOAT
;
else
if
(
typeStr
==
"Byte"
)
return
CV_8U
;
return
TYPE_BYTE
;
else
if
(
typeStr
==
"Char"
)
return
CV_8S
;
return
TYPE_CHAR
;
else
if
(
typeStr
==
"Short"
)
return
CV_16S
;
return
TYPE_SHORT
;
else
if
(
typeStr
==
"Int"
)
return
CV_32S
;
else
if
(
typeStr
==
"Long"
)
//Carefully! CV_64S type coded as CV_USRTYPE1
return
CV_USRTYPE1
;
return
TYPE_INT
;
else
if
(
typeStr
==
"Long"
)
return
TYPE_LONG
;
else
CV_Error
(
Error
::
StsNotImplemented
,
"Unknown type
\"
"
+
typeStr
+
"
\"
of torch class
\"
"
+
str
+
"
\"
"
);
}
...
...
@@ -236,36 +248,44 @@ struct TorchImporter
void
readTorchStorage
(
int
index
,
int
type
=
-
1
)
{
long
size
=
readLong
();
Mat
storageMat
(
1
,
size
,
(
type
!=
CV_USRTYPE1
)
?
type
:
CV_64F
);
//handle LongStorage as CV_64F Mat
Mat
storageMat
;
switch
(
type
)
{
case
CV_32F
:
case
TYPE_FLOAT
:
storageMat
.
create
(
1
,
size
,
CV_32F
);
THFile_readFloatRaw
(
file
,
(
float
*
)
storageMat
.
data
,
size
);
break
;
case
CV_64F
:
case
TYPE_DOUBLE
:
storageMat
.
create
(
1
,
size
,
CV_64F
);
THFile_readDoubleRaw
(
file
,
(
double
*
)
storageMat
.
data
,
size
);
break
;
case
CV_8S
:
case
CV_8U
:
case
TYPE_CHAR
:
storageMat
.
create
(
1
,
size
,
CV_8S
);
THFile_readByteRaw
(
file
,
(
uchar
*
)
storageMat
.
data
,
size
);
break
;
case
CV_16S
:
case
CV_16U
:
case
TYPE_BYTE
:
storageMat
.
create
(
1
,
size
,
CV_8U
);
THFile_readByteRaw
(
file
,
(
uchar
*
)
storageMat
.
data
,
size
);
break
;
case
TYPE_SHORT
:
storageMat
.
create
(
1
,
size
,
CV_16S
);
THFile_readShortRaw
(
file
,
(
short
*
)
storageMat
.
data
,
size
);
break
;
case
CV_32S
:
case
TYPE_INT
:
storageMat
.
create
(
1
,
size
,
CV_32S
);
THFile_readIntRaw
(
file
,
(
int
*
)
storageMat
.
data
,
size
);
break
;
case
CV_USRTYPE1
:
case
TYPE_LONG
:
{
storageMat
.
create
(
1
,
size
,
CV_64F
);
//handle LongStorage as CV_64F Mat
double
*
buf
=
storageMat
.
ptr
<
double
>
();
THFile_readLongRaw
(
file
,
(
int64
*
)
buf
,
size
);
for
(
size_t
i
=
(
size_t
)
size
;
i
--
>
0
;
)
buf
[
i
]
=
((
int64
*
)
buf
)[
i
];
}
break
;
}
default
:
CV_Error
(
Error
::
StsInternal
,
""
);
break
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment