Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
张士柳
/
eyemLib
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
图表
网络
创建新的问题
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 75b7b0d3
由
张士柳
编写于
2021-06-02 17:23:54 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
无
1 个父辈
9b0890d9
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
133 行增加
和
85 行删除
eyemLib-Sharp/EyemLib.cs
eyemLib/eyemDataCode.cpp
eyemLib/eyemMisc.cpp
eyemLib/yoloWrapper.cpp
eyemLib/yoloWrapper.h
eyemLib-Sharp/EyemLib.cs
查看文件 @
75b7b0d
...
@@ -851,7 +851,6 @@ namespace eyemLib_Sharp
...
@@ -851,7 +851,6 @@ namespace eyemLib_Sharp
{
{
EyemImage
image
;
EyemImage
image
;
EyemImage
tpDstImg
=
new
EyemImage
();
EyemImage
tpDstImg
=
new
EyemImage
();
//int flag = eyemImageRead("1.png", -1, out image);
//int flag = eyemImageReadRaw(fileName, 3072, 3072, 2, out ucpImage);
//int flag = eyemImageReadRaw(fileName, 3072, 3072, 2, out ucpImage);
int
flag
=
eyemImageRead
(
fileName
,
-
1
,
out
image
);
int
flag
=
eyemImageRead
(
fileName
,
-
1
,
out
image
);
if
(
flag
!=
0
)
if
(
flag
!=
0
)
...
@@ -862,6 +861,10 @@ namespace eyemLib_Sharp
...
@@ -862,6 +861,10 @@ namespace eyemLib_Sharp
Stopwatch
sw
=
new
Stopwatch
();
Stopwatch
sw
=
new
Stopwatch
();
sw
.
Restart
();
sw
.
Restart
();
//Bitmap bit = new Bitmap("D:\\批量测试图像\\clamp_sloped_29.png");
//EyemImage test = eyemCvtToEyemImage(bit);
//flag = eyemImageMalloc(image.iWidth, image.iHeight, 1, "uint16_t", out image1);
//flag = eyemImageMalloc(image.iWidth, image.iHeight, 1, "uint16_t", out image1);
//flag = eyemImageMalloc(image.iWidth, image.iHeight, 1, "int8_t", out image2);
//flag = eyemImageMalloc(image.iWidth, image.iHeight, 1, "int8_t", out image2);
...
@@ -875,7 +878,7 @@ namespace eyemLib_Sharp
...
@@ -875,7 +878,7 @@ namespace eyemLib_Sharp
//flag = eyemImageAbs(image1, ref tpDstImg);
//flag = eyemImageAbs(image1, ref tpDstImg);
//flag = eyemLibImpl(
image
, out tpDstImg);
//flag = eyemLibImpl(
test
, out tpDstImg);
//EyemOcsFXYR tpCircle = new EyemOcsFXYR();
//EyemOcsFXYR tpCircle = new EyemOcsFXYR();
//flag = eyemMarkerTracing(image, 130, ref tpCircle);
//flag = eyemMarkerTracing(image, 130, ref tpCircle);
...
@@ -1384,7 +1387,7 @@ namespace eyemLib_Sharp
...
@@ -1384,7 +1387,7 @@ namespace eyemLib_Sharp
eyemImageFree
(
ref
image
);
eyemImageFree
(
ref
image
);
}
}
#
region
将
EyemImage
转换成
Bitmap
#
region
EyemImage
与
Bitmap
相互转换
public
static
Bitmap
eyemCvtToBitmap
(
EyemImage
tpImage
)
public
static
Bitmap
eyemCvtToBitmap
(
EyemImage
tpImage
)
{
{
if
(
tpImage
.
vpImage
==
IntPtr
.
Zero
||
tpImage
.
iDepth
!=
0
)
if
(
tpImage
.
vpImage
==
IntPtr
.
Zero
||
tpImage
.
iDepth
!=
0
)
...
@@ -1444,6 +1447,54 @@ namespace eyemLib_Sharp
...
@@ -1444,6 +1447,54 @@ namespace eyemLib_Sharp
}
}
return
bitmap
;
return
bitmap
;
}
}
public
static
EyemImage
eyemCvtToEyemImage
(
Bitmap
bitmap
)
{
EyemImage
tpImage
=
new
EyemImage
();
//锁定数据区
BitmapData
bd
=
bitmap
.
LockBits
(
new
Rectangle
(
0
,
0
,
bitmap
.
Width
,
bitmap
.
Height
),
ImageLockMode
.
ReadOnly
,
bitmap
.
PixelFormat
);
switch
(
bitmap
.
PixelFormat
)
{
case
PixelFormat
.
Format8bppIndexed
:
tpImage
.
iChannels
=
1
;
break
;
case
PixelFormat
.
Format24bppRgb
:
tpImage
.
iChannels
=
3
;
break
;
case
PixelFormat
.
Format32bppArgb
:
tpImage
.
iChannels
=
4
;
break
;
default
:
throw
new
Exception
(
"Image formats are not supported"
);
}
//仅支持8位
tpImage
.
iDepth
=
0
;
//图像尺寸
tpImage
.
iWidth
=
bitmap
.
Width
;
tpImage
.
iHeight
=
bitmap
.
Height
;
//分配内存(释放不是用eyemImageFree,用Marshal.FreeHGlobal(tpImage.vpImage))
tpImage
.
vpImage
=
Marshal
.
AllocHGlobal
(
bd
.
Stride
*
bd
.
Height
);
try
{
int
pd
=
((
tpImage
.
iWidth
*
tpImage
.
iChannels
)
+
3
)
/
4
*
4
;
long
bytesToCopy
=
tpImage
.
iWidth
*
tpImage
.
iChannels
;
for
(
int
y
=
0
;
y
<
tpImage
.
iHeight
;
y
++)
{
long
offsetSrc
=
y
*
pd
;
long
offsetDst
=
y
*
tpImage
.
iWidth
*
tpImage
.
iChannels
;
Buffer
.
MemoryCopy
((
byte
*)(
bd
.
Scan0
.
ToPointer
())
+
offsetSrc
,
(
byte
*)(
tpImage
.
vpImage
.
ToPointer
())
+
offsetDst
,
bytesToCopy
,
bytesToCopy
);
}
}
finally
{
bitmap
.
UnlockBits
(
bd
);
}
return
tpImage
;
}
#
endregion
#
endregion
#
region
结构体转内存指针
#
region
结构体转内存指针
...
...
eyemLib/eyemDataCode.cpp
查看文件 @
75b7b0d
...
@@ -713,50 +713,50 @@ int eyemDetectAndDecodeUseNN(EyemImage tpImage, EyemRect tpRoi, IntPtr *hObject,
...
@@ -713,50 +713,50 @@ int eyemDetectAndDecodeUseNN(EyemImage tpImage, EyemRect tpRoi, IntPtr *hObject,
auto
results
=
detector
->
detectAndDecode
(
image
,
points
,
__points
);
auto
results
=
detector
->
detectAndDecode
(
image
,
points
,
__points
);
#pragma region discard
#pragma region discard
if
(
image
.
channels
()
==
1
)
{
//
if (image.channels() == 1) {
cv
::
cvtColor
(
image
,
image
,
cv
::
COLOR_GRAY2BGR
);
//
cv::cvtColor(image, image, cv::COLOR_GRAY2BGR);
}
//
}
else
if
(
image
.
channels
()
==
4
)
{
//
else if (image.channels() == 4) {
cv
::
cvtColor
(
image
,
image
,
cv
::
COLOR_BGRA2BGR
);
//
cv::cvtColor(image, image, cv::COLOR_BGRA2BGR);
}
//
}
cv
::
Mat
showMat
=
image
.
clone
();
//
cv::Mat showMat = image.clone();
for
(
auto
&
point
:
__points
)
{
//
for (auto&point : __points) {
cv
::
rectangle
(
showMat
,
point
,
cv
::
Scalar
(
0
,
0
,
255
),
2
);
//
cv::rectangle(showMat, point, cv::Scalar(0, 0, 255), 2);
}
//
}
for
(
auto
&
point
:
points
)
{
//
for (auto&point : points) {
cv
::
rectangle
(
showMat
,
point
,
cv
::
Scalar
(
0
,
255
,
0
),
2
);
//
cv::rectangle(showMat, point, cv::Scalar(0, 255, 0), 2);
}
//
}
for
(
int
c
=
0
;
c
<
results
.
size
();
c
++
)
{
//
for (int c = 0; c < results.size(); c++) {
int
baseLine
;
//
int baseLine;
std
::
string
label
=
results
[
c
];
//
std::string label = results[c];
cv
::
Size
labelSize
=
cv
::
getTextSize
(
label
,
cv
::
FONT_HERSHEY_SIMPLEX
,
0.5
,
1
,
&
baseLine
);
//
cv::Size labelSize = cv::getTextSize(label, cv::FONT_HERSHEY_SIMPLEX, 0.5, 1, &baseLine);
cv
::
Scalar
pal
(
0
,
255
,
0
);
//
cv::Scalar pal(0, 255, 0);
cv
::
rectangle
(
showMat
,
cv
::
Point
(
points
[
c
].
tl
().
x
,
points
[
c
].
tl
().
y
-
labelSize
.
height
-
baseLine
),
cv
::
Point
(
points
[
c
].
tl
().
x
+
labelSize
.
width
,
points
[
c
].
tl
().
y
),
pal
,
cv
::
FILLED
);
//
cv::rectangle(showMat, cv::Point(points[c].tl().x, points[c].tl().y - labelSize.height - baseLine), cv::Point(points[c].tl().x + labelSize.width, points[c].tl().y), pal, cv::FILLED);
cv
::
putText
(
showMat
,
label
,
cv
::
Point
(
points
[
c
].
tl
().
x
,
points
[
c
].
tl
().
y
-
baseLine
),
cv
::
FONT_HERSHEY_SIMPLEX
,
0.5
,
cv
::
Scalar
(
0
,
0
,
0
),
1
);
//
cv::putText(showMat, label, cv::Point(points[c].tl().x, points[c].tl().y - baseLine), cv::FONT_HERSHEY_SIMPLEX, 0.5, cv::Scalar(0, 0, 0), 1);
}
//
}
///<输出结果图像
///
//
<输出结果图像
{
//
{
tpDstImg
->
iWidth
=
showMat
.
cols
;
tpDstImg
->
iHeight
=
showMat
.
rows
;
tpDstImg
->
iDepth
=
showMat
.
depth
();
tpDstImg
->
iChannels
=
showMat
.
channels
();
//
tpDstImg->iWidth = showMat.cols; tpDstImg->iHeight = showMat.rows; tpDstImg->iDepth = showMat.depth(); tpDstImg->iChannels = showMat.channels();
//内存尺寸
//
//内存尺寸
int
_Size
=
tpDstImg
->
iWidth
*
tpDstImg
->
iHeight
*
tpDstImg
->
iChannels
*
sizeof
(
uint8_t
);
//
int _Size = tpDstImg->iWidth*tpDstImg->iHeight*tpDstImg->iChannels * sizeof(uint8_t);
//分配初始化内存
//
//分配初始化内存
tpDstImg
->
vpImage
=
(
uint8_t
*
)
malloc
(
_Size
);
//
tpDstImg->vpImage = (uint8_t *)malloc(_Size);
if
(
NULL
==
tpDstImg
->
vpImage
)
//
if (NULL == tpDstImg->vpImage)
return
FUNC_NOT_ENOUGH_MEM
;
//
return FUNC_NOT_ENOUGH_MEM;
memset
(
tpDstImg
->
vpImage
,
0
,
_Size
);
//
memset(tpDstImg->vpImage, 0, _Size);
//拷贝数据
//
//拷贝数据
memcpy
(
tpDstImg
->
vpImage
,
showMat
.
data
,
_Size
);
//
memcpy(tpDstImg->vpImage, showMat.data, _Size);
}
//
}
#pragma endregion
#pragma endregion
//解码结果
//解码结果
...
@@ -814,33 +814,33 @@ int eyemDetectAndDecodeBarcodeUseNN(EyemImage tpImage, EyemRect tpRoi, IntPtr *h
...
@@ -814,33 +814,33 @@ int eyemDetectAndDecodeBarcodeUseNN(EyemImage tpImage, EyemRect tpRoi, IntPtr *h
#pragma region discard
#pragma region discard
for
(
int
c
=
0
;
c
<
results
.
size
();
c
++
)
{
//
for (int c = 0; c < results.size(); c++) {
int
baseLine
;
//
int baseLine;
std
::
string
label
=
results
[
c
];
//
std::string label = results[c];
cv
::
Size
labelSize
=
cv
::
getTextSize
(
label
,
cv
::
FONT_HERSHEY_SIMPLEX
,
0.5
,
1
,
&
baseLine
);
//
cv::Size labelSize = cv::getTextSize(label, cv::FONT_HERSHEY_SIMPLEX, 0.5, 1, &baseLine);
cv
::
Scalar
pal
(
0
,
255
,
255
);
//
cv::Scalar pal(0, 255, 255);
cv
::
rectangle
(
showMat
,
cv
::
Point
(
points
[
c
].
x
,
points
[
c
].
y
-
labelSize
.
height
-
baseLine
),
cv
::
Point
(
points
[
c
].
x
+
labelSize
.
width
,
points
[
c
].
y
),
pal
,
cv
::
FILLED
);
//
cv::rectangle(showMat, cv::Point(points[c].x, points[c].y - labelSize.height - baseLine), cv::Point(points[c].x + labelSize.width, points[c].y), pal, cv::FILLED);
cv
::
putText
(
showMat
,
label
,
cv
::
Point
(
points
[
c
].
x
,
points
[
c
].
y
-
baseLine
),
cv
::
FONT_HERSHEY_SIMPLEX
,
0.5
,
cv
::
Scalar
(
0
,
0
,
0
),
1
);
//
cv::putText(showMat, label, cv::Point(points[c].x, points[c].y - baseLine), cv::FONT_HERSHEY_SIMPLEX, 0.5, cv::Scalar(0, 0, 0), 1);
}
//
}
///<输出结果图像
///
//
<输出结果图像
{
//
{
tpDstImg
->
iWidth
=
showMat
.
cols
;
tpDstImg
->
iHeight
=
showMat
.
rows
;
tpDstImg
->
iDepth
=
showMat
.
depth
();
tpDstImg
->
iChannels
=
showMat
.
channels
();
//
tpDstImg->iWidth = showMat.cols; tpDstImg->iHeight = showMat.rows; tpDstImg->iDepth = showMat.depth(); tpDstImg->iChannels = showMat.channels();
//内存尺寸
//
//内存尺寸
int
_Size
=
tpDstImg
->
iWidth
*
tpDstImg
->
iHeight
*
tpDstImg
->
iChannels
*
sizeof
(
uint8_t
);
//
int _Size = tpDstImg->iWidth*tpDstImg->iHeight*tpDstImg->iChannels * sizeof(uint8_t);
//分配初始化内存
//
//分配初始化内存
tpDstImg
->
vpImage
=
(
uint8_t
*
)
malloc
(
_Size
);
//
tpDstImg->vpImage = (uint8_t *)malloc(_Size);
if
(
NULL
==
tpDstImg
->
vpImage
)
//
if (NULL == tpDstImg->vpImage)
return
FUNC_NOT_ENOUGH_MEM
;
//
return FUNC_NOT_ENOUGH_MEM;
memset
(
tpDstImg
->
vpImage
,
0
,
_Size
);
//
memset(tpDstImg->vpImage, 0, _Size);
//拷贝数据
//
//拷贝数据
memcpy
(
tpDstImg
->
vpImage
,
showMat
.
data
,
_Size
);
//
memcpy(tpDstImg->vpImage, showMat.data, _Size);
}
//
}
#pragma endregion
#pragma endregion
//解码结果
//解码结果
...
...
eyemLib/eyemMisc.cpp
查看文件 @
75b7b0d
...
@@ -6274,11 +6274,9 @@ int eyemReleaseModel(IntPtr &hModelID)
...
@@ -6274,11 +6274,9 @@ int eyemReleaseModel(IntPtr &hModelID)
int
eyemTrackFeature
(
EyemImage
tpRefImg
,
EyemImage
tpNextImg
,
EyemRect3
*
tpRois
,
int
iRoiNum
,
int
*
ipResults
,
EyemImage
*
tpDstImg
)
int
eyemTrackFeature
(
EyemImage
tpRefImg
,
EyemImage
tpNextImg
,
EyemRect3
*
tpRois
,
int
iRoiNum
,
int
*
ipResults
,
EyemImage
*
tpDstImg
)
{
{
cv
::
Mat
refImg
(
tpRefImg
.
iHeight
,
tpRefImg
.
iWidth
,
cv
::
Mat
refImg
=
cv
::
Mat
(
tpRefImg
.
iHeight
,
tpRefImg
.
iWidth
,
MAKETYPE
(
tpRefImg
.
iDepth
,
tpRefImg
.
iChannels
),
tpRefImg
.
vpImage
).
clone
();
MAKETYPE
(
tpRefImg
.
iDepth
,
tpRefImg
.
iChannels
),
tpRefImg
.
vpImage
);
cv
::
Mat
nextImg
(
tpNextImg
.
iHeight
,
tpNextImg
.
iWidth
,
cv
::
Mat
nextImg
=
cv
::
Mat
(
tpNextImg
.
iHeight
,
tpNextImg
.
iWidth
,
MAKETYPE
(
tpNextImg
.
iDepth
,
tpNextImg
.
iChannels
),
tpNextImg
.
vpImage
).
clone
();
MAKETYPE
(
tpNextImg
.
iDepth
,
tpNextImg
.
iChannels
),
tpNextImg
.
vpImage
);
if
(
refImg
.
empty
()
|
nextImg
.
empty
())
if
(
refImg
.
empty
()
|
nextImg
.
empty
())
return
FUNC_IMAGE_NOT_EXIST
;
return
FUNC_IMAGE_NOT_EXIST
;
...
@@ -6317,7 +6315,7 @@ int eyemTrackFeature(EyemImage tpRefImg, EyemImage tpNextImg, EyemRect3 *tpRois,
...
@@ -6317,7 +6315,7 @@ int eyemTrackFeature(EyemImage tpRefImg, EyemImage tpNextImg, EyemRect3 *tpRois,
//寻找轮廓
//寻找轮廓
std
::
vector
<
std
::
vector
<
cv
::
Point
>>
contours
;
std
::
vector
<
std
::
vector
<
cv
::
Point
>>
contours
;
cv
::
findContours
(
binary
(
cv
::
Rect
(
tpRois
[
i
].
iXs
,
tpRois
[
i
].
iYs
,
tpRois
[
i
].
iWidth
,
tpRois
[
i
].
iHeight
)),
contours
,
cv
::
RETR_TREE
,
cv
::
CHAIN_APPROX_
NON
E
);
cv
::
findContours
(
binary
(
cv
::
Rect
(
tpRois
[
i
].
iXs
,
tpRois
[
i
].
iYs
,
tpRois
[
i
].
iWidth
,
tpRois
[
i
].
iHeight
)),
contours
,
cv
::
RETR_TREE
,
cv
::
CHAIN_APPROX_
SIMPL
E
);
//画图
//画图
for
(
int
j
=
0
;
j
<
contours
.
size
();
j
++
)
for
(
int
j
=
0
;
j
<
contours
.
size
();
j
++
)
...
@@ -6325,11 +6323,6 @@ int eyemTrackFeature(EyemImage tpRefImg, EyemImage tpNextImg, EyemRect3 *tpRois,
...
@@ -6325,11 +6323,6 @@ int eyemTrackFeature(EyemImage tpRefImg, EyemImage tpNextImg, EyemRect3 *tpRois,
cv
::
drawContours
(
showMat
,
contours
,
j
,
cv
::
Scalar
(
0
,
0
,
255
),
3
,
8
,
cv
::
noArray
(),
2147483647
,
cv
::
Point
(
tpRois
[
i
].
iXs
,
tpRois
[
i
].
iYs
));
cv
::
drawContours
(
showMat
,
contours
,
j
,
cv
::
Scalar
(
0
,
0
,
255
),
3
,
8
,
cv
::
noArray
(),
2147483647
,
cv
::
Point
(
tpRois
[
i
].
iXs
,
tpRois
[
i
].
iYs
));
}
}
}
}
//cv::imshow("eyemLib", showMat);
//cv::waitKey(1);
///<输出结果图像
///<输出结果图像
{
{
tpDstImg
->
iWidth
=
showMat
.
cols
;
tpDstImg
->
iHeight
=
showMat
.
rows
;
tpDstImg
->
iDepth
=
showMat
.
depth
();
tpDstImg
->
iChannels
=
showMat
.
channels
();
tpDstImg
->
iWidth
=
showMat
.
cols
;
tpDstImg
->
iHeight
=
showMat
.
rows
;
tpDstImg
->
iDepth
=
showMat
.
depth
();
tpDstImg
->
iChannels
=
showMat
.
channels
();
...
@@ -6346,7 +6339,6 @@ int eyemTrackFeature(EyemImage tpRefImg, EyemImage tpNextImg, EyemRect3 *tpRois,
...
@@ -6346,7 +6339,6 @@ int eyemTrackFeature(EyemImage tpRefImg, EyemImage tpNextImg, EyemRect3 *tpRois,
//拷贝数据
//拷贝数据
memcpy
(
tpDstImg
->
vpImage
,
showMat
.
data
,
_Size
);
memcpy
(
tpDstImg
->
vpImage
,
showMat
.
data
,
_Size
);
}
}
return
FUNC_OK
;
return
FUNC_OK
;
}
}
...
@@ -6496,9 +6488,16 @@ int eyemMarkerTracing(EyemImage tpImage, double dThreshold, EyemOcsFXYR *tpCircl
...
@@ -6496,9 +6488,16 @@ int eyemMarkerTracing(EyemImage tpImage, double dThreshold, EyemOcsFXYR *tpCircl
tpCircle
->
fY
=
(
float
)
afas
[
0
].
tpCircle
.
dY
;
tpCircle
->
fY
=
(
float
)
afas
[
0
].
tpCircle
.
dY
;
tpCircle
->
fR
=
(
float
)
afas
[
0
].
tpCircle
.
dR
;
tpCircle
->
fR
=
(
float
)
afas
[
0
].
tpCircle
.
dR
;
//#ifdef _DEBUG
//#ifdef _DEBUG
// cv::circle(backup, cv::Point(tpCircle->fX, tpCircle->fY), tpCircle->fR, cv::Scalar(0, 255, 0));
// cv::circle(backup, cv::Point(tpCircle->fX, tpCircle->fY), tpCircle->fR, cv::Scalar(0, 255, 0));
//#endif
//#endif
return
FUNC_OK
;
}
int
eyemMultFuncImpl
(
EyemImage
tpImage
,
EyemRect
tpRoi
,
const
char
*
funcName
,
double
dThreshold
,
EyemOcsFXY
*
tpCircle
,
EyemImage
*
tpDstImg
)
{
return
FUNC_OK
;
return
FUNC_OK
;
}
}
...
...
eyemLib/yoloWrapper.cpp
查看文件 @
75b7b0d
#include "yoloWrapper.h"
#include "yoloWrapper.h"
int
YoloWrapper
::
init
(
const
cv
::
String
&
detector_config_path
,
int
YoloWrapper
::
init
(
const
cv
::
String
&
detector_config_path
,
const
cv
::
String
&
detector_model_path
)
{
const
cv
::
String
&
detector_model_path
)
{
if
(
!
detector_config_path
.
empty
()
&&
!
detector_model_path
.
empty
())
{
if
(
!
detector_config_path
.
empty
()
&&
!
detector_model_path
.
empty
())
{
...
@@ -12,7 +11,6 @@ int YoloWrapper::init(const cv::String& detector_config_path,
...
@@ -12,7 +11,6 @@ int YoloWrapper::init(const cv::String& detector_config_path,
return
0
;
return
0
;
}
}
std
::
vector
<
cv
::
Rect
>
YoloWrapper
::
forward
(
cv
::
Mat
img
)
{
std
::
vector
<
cv
::
Rect
>
YoloWrapper
::
forward
(
cv
::
Mat
img
)
{
//获取输出层名称
//获取输出层名称
auto
layerNames
=
net_
.
getLayerNames
();
auto
layerNames
=
net_
.
getLayerNames
();
...
...
eyemLib/yoloWrapper.h
查看文件 @
75b7b0d
...
@@ -13,7 +13,7 @@ class YoloWrapper
...
@@ -13,7 +13,7 @@ class YoloWrapper
{
{
public
:
public
:
YoloWrapper
()
{};
YoloWrapper
()
{};
~
YoloWrapper
()
{
};
~
YoloWrapper
()
{};
int
init
(
const
std
::
string
&
config_path
,
const
std
::
string
&
model_path
);
int
init
(
const
std
::
string
&
config_path
,
const
std
::
string
&
model_path
);
std
::
vector
<
cv
::
Rect
>
forward
(
cv
::
Mat
img
);
std
::
vector
<
cv
::
Rect
>
forward
(
cv
::
Mat
img
);
private
:
private
:
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论