Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
张士柳
/
eyemLib
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
图表
网络
创建新的问题
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit c56e3788
由
张士柳
编写于
2021-03-17 16:03:34 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
无
1 个父辈
ef64ee34
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
27 行增加
和
31 行删除
eyemLib-Sharp/EyemLib.cs
eyemLib/eyemLib.h
eyemLib/eyemLib.rc
eyemLib/eyemMisc.cpp
eyemLib-Sharp/EyemLib.cs
查看文件 @
c56e378
...
@@ -716,10 +716,10 @@ namespace eyemLib_Sharp
...
@@ -716,10 +716,10 @@ namespace eyemLib_Sharp
private
static
extern
int
eyemCountObjectIrregularParts
(
EyemImage
tpImage
,
string
fileName
,
double
dOffset
,
string
strType
,
int
iMaxArea
,
int
iWinSize
,
ref
string
pNumObj
,
out
EyemImage
tpDstImg
);
private
static
extern
int
eyemCountObjectIrregularParts
(
EyemImage
tpImage
,
string
fileName
,
double
dOffset
,
string
strType
,
int
iMaxArea
,
int
iWinSize
,
ref
string
pNumObj
,
out
EyemImage
tpDstImg
);
//普通器件(新版本)
//普通器件(新版本)
[
DllImport
(
"eyemLib.dll"
,
CharSet
=
CharSet
.
None
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
[
DllImport
(
"eyemLib.dll"
,
CharSet
=
CharSet
.
None
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
private
static
extern
int
eyemCountObjectE
(
EyemImage
tpImage
,
string
fileName
,
ref
string
pNumObj
,
out
EyemImage
tpDstImg
);
private
static
extern
int
eyemCountObjectE
(
EyemImage
tpImage
,
EyemRect
tpRoi
,
string
fileName
,
ref
string
pNumObj
,
out
EyemImage
tpDstImg
);
//异型器件(新版本)
//异型器件(新版本)
[
DllImport
(
"eyemLib.dll"
,
CharSet
=
CharSet
.
None
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
[
DllImport
(
"eyemLib.dll"
,
CharSet
=
CharSet
.
None
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
private
static
extern
int
eyemCountObjectIrregularPartsE
(
EyemImage
tpImage
,
string
fileName
,
string
ccTplName
,
ref
string
pNumObj
,
out
EyemImage
tpDstImg
);
private
static
extern
int
eyemCountObjectIrregularPartsE
(
EyemImage
tpImage
,
EyemRect
tpRoi
,
string
fileName
,
string
ccTplName
,
ref
string
pNumObj
,
out
EyemImage
tpDstImg
);
//创建模板匹配模型
//创建模板匹配模型
[
DllImport
(
"eyemLib.dll"
,
CharSet
=
CharSet
.
None
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
[
DllImport
(
"eyemLib.dll"
,
CharSet
=
CharSet
.
None
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
private
static
extern
int
eyemCreateTemplateModel
(
EyemImage
tpImage
,
EyemRect
tpRoi
,
double
dMinScore
,
string
ccTplName
);
private
static
extern
int
eyemCreateTemplateModel
(
EyemImage
tpImage
,
EyemRect
tpRoi
,
double
dMinScore
,
string
ccTplName
);
...
@@ -948,8 +948,8 @@ namespace eyemLib_Sharp
...
@@ -948,8 +948,8 @@ namespace eyemLib_Sharp
//"IP_SMALL_PARTS","IP_LARGE_PARTS","IP_LONG_PARTS",""
//"IP_SMALL_PARTS","IP_LARGE_PARTS","IP_LONG_PARTS",""
//eyemCountObject(image, file.Replace(".png", ""), 35, 0, 100, 5, ref pNumObj, out tpDstImg);
//eyemCountObject(image, file.Replace(".png", ""), 35, 0, 100, 5, ref pNumObj, out tpDstImg);
//eyemCountObjectIrregularParts(image, file.Replace(".png", ""), 0.1, "IP_LARGE_PARTS", 100, 7, ref pNumObj, out tpDstImg);
//eyemCountObjectIrregularParts(image, file.Replace(".png", ""), 0.1, "IP_LARGE_PARTS", 100, 7, ref pNumObj, out tpDstImg);
//eyemCountObjectE(image
, fileName, ref pNumObj, out tpDstImg);
eyemCountObjectE
(
image
,
tpRoi
,
fileName
,
ref
pNumObj
,
out
tpDstImg
);
eyemCountObjectIrregularPartsE
(
image
,
file
.
Replace
(
".png"
,
""
),
selectModel
,
ref
pNumObj
,
out
tpDstImg
);
eyemCountObjectIrregularPartsE
(
image
,
tpRoi
,
file
.
Replace
(
".png"
,
""
),
selectModel
,
ref
pNumObj
,
out
tpDstImg
);
Bitmap
bitmap
=
eyemCvtToBitmap
(
tpDstImg
);
Bitmap
bitmap
=
eyemCvtToBitmap
(
tpDstImg
);
...
...
eyemLib/eyemLib.h
查看文件 @
c56e378
...
@@ -833,9 +833,9 @@ extern "C" {
...
@@ -833,9 +833,9 @@ extern "C" {
EXPORTS
int
eyemDetectAndDecode
(
EyemImage
tpImage
,
EyemRect
tpRoi
,
const
char
*
ccFileName
,
const
char
*
ccCodeType
,
IntPtr
*
hObject
,
EyemBarCode
**
tpResult
,
int
*
ipNum
,
bool
bUseNiBlack
,
int
iBlockSize
,
const
int
iRangeC
,
int
iSymbolMin
,
int
iSymbolMax
,
double
dScaleUpAndDown
=
0
.
5
,
double
dToleErr
=
0
.
5
,
double
dMinorStep
=
1
.
0
);
EXPORTS
int
eyemDetectAndDecode
(
EyemImage
tpImage
,
EyemRect
tpRoi
,
const
char
*
ccFileName
,
const
char
*
ccCodeType
,
IntPtr
*
hObject
,
EyemBarCode
**
tpResult
,
int
*
ipNum
,
bool
bUseNiBlack
,
int
iBlockSize
,
const
int
iRangeC
,
int
iSymbolMin
,
int
iSymbolMax
,
double
dScaleUpAndDown
=
0
.
5
,
double
dToleErr
=
0
.
5
,
double
dMinorStep
=
1
.
0
);
EXPORTS
bool
eyemDetectAndDecodeFree
(
IntPtr
hObject
);
EXPORTS
bool
eyemDetectAndDecodeFree
(
IntPtr
hObject
);
EXPORTS
int
eyemCountObject
(
EyemImage
tpImage
,
const
char
*
fileName
,
double
dOffset
,
int
iMinArea
,
int
iMaxArea
,
int
iWinSize
,
LPSTR
*
lpszNumObj
,
EyemImage
*
tpDstImg
);
EXPORTS
int
eyemCountObject
(
EyemImage
tpImage
,
const
char
*
fileName
,
double
dOffset
,
int
iMinArea
,
int
iMaxArea
,
int
iWinSize
,
LPSTR
*
lpszNumObj
,
EyemImage
*
tpDstImg
);
EXPORTS
int
eyemCountObjectE
(
EyemImage
tpImage
,
const
char
*
fileName
,
LPSTR
*
lpszNumObj
,
EyemImage
*
tpDstImg
);
EXPORTS
int
eyemCountObjectE
(
EyemImage
tpImage
,
EyemRect
tpRoi
,
const
char
*
fileName
,
LPSTR
*
lpszNumObj
,
EyemImage
*
tpDstImg
);
EXPORTS
int
eyemCountObjectIrregularParts
(
EyemImage
tpImage
,
const
char
*
fileName
,
double
dOffset
,
const
char
*
ccSubType
,
int
iMaxArea
,
int
iWinSize
,
LPSTR
*
lpszNumObj
,
EyemImage
*
tpDstImg
);
EXPORTS
int
eyemCountObjectIrregularParts
(
EyemImage
tpImage
,
const
char
*
fileName
,
double
dOffset
,
const
char
*
ccSubType
,
int
iMaxArea
,
int
iWinSize
,
LPSTR
*
lpszNumObj
,
EyemImage
*
tpDstImg
);
EXPORTS
int
eyemCountObjectIrregularPartsE
(
EyemImage
tpImage
,
const
char
*
fileName
,
const
char
*
ccTplName
,
LPSTR
*
lpszNumObj
,
EyemImage
*
tpDstImg
);
EXPORTS
int
eyemCountObjectIrregularPartsE
(
EyemImage
tpImage
,
EyemRect
tpRoi
,
const
char
*
fileName
,
const
char
*
ccTplName
,
LPSTR
*
lpszNumObj
,
EyemImage
*
tpDstImg
);
EXPORTS
int
eyemAchvTemplateImage
(
EyemImage
tpImage
,
EyemRect
tpRoi
,
EyemImage
*
tpDstImg
);
EXPORTS
int
eyemAchvTemplateImage
(
EyemImage
tpImage
,
EyemRect
tpRoi
,
EyemImage
*
tpDstImg
);
EXPORTS
int
eyemCreateTemplateModel
(
EyemImage
tpImage
,
EyemRect
tpRoi
,
double
dMinScore
,
const
char
*
ccTplName
);
EXPORTS
int
eyemCreateTemplateModel
(
EyemImage
tpImage
,
EyemRect
tpRoi
,
double
dMinScore
,
const
char
*
ccTplName
);
EXPORTS
int
eyemMatchTemplateModel
(
EyemImage
tpImage
,
const
char
*
ccTplNames
,
LPSTR
*
lpszTplName
);
EXPORTS
int
eyemMatchTemplateModel
(
EyemImage
tpImage
,
const
char
*
ccTplNames
,
LPSTR
*
lpszTplName
);
...
...
eyemLib/eyemLib.rc
查看文件 @
c56e378
此文件类型无法预览
eyemLib/eyemMisc.cpp
查看文件 @
c56e378
...
@@ -580,10 +580,10 @@ int eyemCountObject(EyemImage tpImage, const char *fileName, double dOffset, int
...
@@ -580,10 +580,10 @@ int eyemCountObject(EyemImage tpImage, const char *fileName, double dOffset, int
cv
::
cvtColor
(
src
,
src
,
cv
::
COLOR_BGR2GRAY
);
cv
::
cvtColor
(
src
,
src
,
cv
::
COLOR_BGR2GRAY
);
cv
::
Mat
src8U
;
cv
::
Mat
src8U
;
//环鸿
//环鸿
&佳世达
//
src = src(cv::Range(200, src.cols - 70), cv::Range(200, src.rows - 10)).clone();
src
=
src
(
cv
::
Range
(
200
,
src
.
cols
-
70
),
cv
::
Range
(
200
,
src
.
rows
-
10
)).
clone
();
//其他设备
//其他设备
src
=
src
(
cv
::
Range
(
20
,
src
.
cols
-
20
),
cv
::
Range
(
20
,
src
.
rows
-
20
)).
clone
();
//
src = src(cv::Range(20, src.cols - 20), cv::Range(20, src.rows - 20)).clone();
//image size
//image size
int
X
=
src
.
cols
,
Y
=
src
.
rows
;
int
X
=
src
.
cols
,
Y
=
src
.
rows
;
...
@@ -1549,10 +1549,10 @@ int eyemCountObjectIrregularParts(EyemImage tpImage, const char *fileName, doubl
...
@@ -1549,10 +1549,10 @@ int eyemCountObjectIrregularParts(EyemImage tpImage, const char *fileName, doubl
if
(
src
.
channels
()
!=
1
)
if
(
src
.
channels
()
!=
1
)
cv
::
cvtColor
(
src
,
src
,
cv
::
COLOR_BGR2GRAY
);
cv
::
cvtColor
(
src
,
src
,
cv
::
COLOR_BGR2GRAY
);
//环鸿
//环鸿
&佳世达
//
src = src(cv::Range(200, src.cols - 70), cv::Range(200, src.rows - 10)).clone();
src
=
src
(
cv
::
Range
(
200
,
src
.
cols
-
70
),
cv
::
Range
(
200
,
src
.
rows
-
10
)).
clone
();
//其他设备
//其他设备
src
=
src
(
cv
::
Range
(
20
,
src
.
cols
-
20
),
cv
::
Range
(
20
,
src
.
rows
-
20
)).
clone
();
//
src = src(cv::Range(20, src.cols - 20), cv::Range(20, src.rows - 20)).clone();
//图像尺寸
//图像尺寸
int
X
=
src
.
cols
,
Y
=
src
.
rows
;
int
X
=
src
.
cols
,
Y
=
src
.
rows
;
...
@@ -3075,7 +3075,7 @@ int eyemCountObjectIrregularParts(EyemImage tpImage, const char *fileName, doubl
...
@@ -3075,7 +3075,7 @@ int eyemCountObjectIrregularParts(EyemImage tpImage, const char *fileName, doubl
return
FUNC_OK
;
return
FUNC_OK
;
}
}
int
eyemCountObjectE
(
EyemImage
tpImage
,
const
char
*
fileName
,
LPSTR
*
lpszNumObj
,
EyemImage
*
tpDstImg
)
int
eyemCountObjectE
(
EyemImage
tpImage
,
EyemRect
tpRoi
,
const
char
*
fileName
,
LPSTR
*
lpszNumObj
,
EyemImage
*
tpDstImg
)
{
{
cv
::
Mat
src
=
cv
::
Mat
(
tpImage
.
iHeight
,
tpImage
.
iWidth
,
MAKETYPE
(
tpImage
.
iDepth
,
tpImage
.
iChannels
),
tpImage
.
vpImage
);
cv
::
Mat
src
=
cv
::
Mat
(
tpImage
.
iHeight
,
tpImage
.
iWidth
,
MAKETYPE
(
tpImage
.
iDepth
,
tpImage
.
iChannels
),
tpImage
.
vpImage
);
if
(
src
.
empty
())
{
if
(
src
.
empty
())
{
...
@@ -3085,12 +3085,8 @@ int eyemCountObjectE(EyemImage tpImage, const char *fileName, LPSTR *lpszNumObj,
...
@@ -3085,12 +3085,8 @@ int eyemCountObjectE(EyemImage tpImage, const char *fileName, LPSTR *lpszNumObj,
if
(
src
.
channels
()
!=
1
)
if
(
src
.
channels
()
!=
1
)
cv
::
cvtColor
(
src
,
src
,
cv
::
COLOR_BGR2GRAY
);
cv
::
cvtColor
(
src
,
src
,
cv
::
COLOR_BGR2GRAY
);
cv
::
Mat
src8U
;
//图像裁剪
src
=
src
(
cv
::
Rect
(
tpRoi
.
iXs
,
tpRoi
.
iYs
,
tpRoi
.
iWidth
,
tpRoi
.
iHeight
)).
clone
();
//环鸿
src
=
src
(
cv
::
Range
(
200
,
src
.
cols
-
70
),
cv
::
Range
(
200
,
src
.
rows
-
10
)).
clone
();
//其他设备
//src = src(cv::Range(10, src.cols - 10), cv::Range(10, src.rows - 10)).clone();
//image size
//image size
int
X
=
src
.
cols
,
Y
=
src
.
rows
;
int
X
=
src
.
cols
,
Y
=
src
.
rows
;
...
@@ -3109,6 +3105,8 @@ int eyemCountObjectE(EyemImage tpImage, const char *fileName, LPSTR *lpszNumObj,
...
@@ -3109,6 +3105,8 @@ int eyemCountObjectE(EyemImage tpImage, const char *fileName, LPSTR *lpszNumObj,
src
/=
(
max
-
min
);
src
/=
(
max
-
min
);
src
*=
65535
;
src
*=
65535
;
src
.
convertTo
(
src
,
CV_16UC1
);
src
.
convertTo
(
src
,
CV_16UC1
);
cv
::
Mat
src8U
;
src
.
convertTo
(
src8U
,
CV_8UC1
,
1
/
255.
);
src
.
convertTo
(
src8U
,
CV_8UC1
,
1
/
255.
);
//for show
//for show
cv
::
Mat
cc
;
cv
::
Mat
cc
;
...
@@ -4052,7 +4050,7 @@ int eyemCountObjectE(EyemImage tpImage, const char *fileName, LPSTR *lpszNumObj,
...
@@ -4052,7 +4050,7 @@ int eyemCountObjectE(EyemImage tpImage, const char *fileName, LPSTR *lpszNumObj,
return
FUNC_OK
;
return
FUNC_OK
;
}
}
int
eyemCountObjectIrregularPartsE
(
EyemImage
tpImage
,
const
char
*
fileName
,
const
char
*
tplName
,
LPSTR
*
lpszNumObj
,
EyemImage
*
tpDstImg
)
int
eyemCountObjectIrregularPartsE
(
EyemImage
tpImage
,
EyemRect
tpRoi
,
const
char
*
fileName
,
const
char
*
tplName
,
LPSTR
*
lpszNumObj
,
EyemImage
*
tpDstImg
)
{
{
cv
::
Mat
src
=
cv
::
Mat
(
tpImage
.
iHeight
,
tpImage
.
iWidth
,
MAKETYPE
(
tpImage
.
iDepth
,
tpImage
.
iChannels
),
tpImage
.
vpImage
);
cv
::
Mat
src
=
cv
::
Mat
(
tpImage
.
iHeight
,
tpImage
.
iWidth
,
MAKETYPE
(
tpImage
.
iDepth
,
tpImage
.
iChannels
),
tpImage
.
vpImage
);
...
@@ -4064,10 +4062,8 @@ int eyemCountObjectIrregularPartsE(EyemImage tpImage, const char *fileName, cons
...
@@ -4064,10 +4062,8 @@ int eyemCountObjectIrregularPartsE(EyemImage tpImage, const char *fileName, cons
if
(
src
.
channels
()
!=
1
)
if
(
src
.
channels
()
!=
1
)
cv
::
cvtColor
(
src
,
src
,
cv
::
COLOR_BGR2GRAY
);
cv
::
cvtColor
(
src
,
src
,
cv
::
COLOR_BGR2GRAY
);
//环鸿
//图像裁剪
src
=
src
(
cv
::
Range
(
200
,
src
.
cols
-
70
),
cv
::
Range
(
200
,
src
.
rows
-
10
)).
clone
();
src
=
src
(
cv
::
Rect
(
tpRoi
.
iXs
,
tpRoi
.
iYs
,
tpRoi
.
iWidth
,
tpRoi
.
iHeight
)).
clone
();
//其他设备
//src = src(cv::Range(10, src.cols - 10), cv::Range(10, src.rows - 10)).clone();
//图像尺寸
//图像尺寸
int
X
=
src
.
cols
,
Y
=
src
.
rows
;
int
X
=
src
.
cols
,
Y
=
src
.
rows
;
...
@@ -4540,7 +4536,7 @@ int eyemCountObjectIrregularPartsE(EyemImage tpImage, const char *fileName, cons
...
@@ -4540,7 +4536,7 @@ int eyemCountObjectIrregularPartsE(EyemImage tpImage, const char *fileName, cons
if
(
trayEnd
)
{
if
(
trayEnd
)
{
//不再判断,大概率已经终止
//不再判断,大概率已经终止
found
=
false
;
found
=
false
;
}
}
else
if
(
trackMat
.
ptr
<
uint8_t
>
(
cvRound
(
trackCenterT
.
y
))[
cvRound
(
trackCenterT
.
x
)]
==
255
)
{
else
if
(
trackMat
.
ptr
<
uint8_t
>
(
cvRound
(
trackCenterT
.
y
))[
cvRound
(
trackCenterT
.
x
)]
==
255
)
{
//不再判断,大概率已经终止
//不再判断,大概率已经终止
found
=
false
;
found
=
false
;
...
@@ -4591,8 +4587,8 @@ int eyemCountObjectIrregularPartsE(EyemImage tpImage, const char *fileName, cons
...
@@ -4591,8 +4587,8 @@ int eyemCountObjectIrregularPartsE(EyemImage tpImage, const char *fileName, cons
//std::cout << "总体耗时:" << 1000 * (static_cast<double>(cv::getTickCount()) - begin0) / cv::getTickFrequency() << std::endl;
//std::cout << "总体耗时:" << 1000 * (static_cast<double>(cv::getTickCount()) - begin0) / cv::getTickFrequency() << std::endl;
trackEnd
=
(
!
found
);
trackEnd
=
(
!
found
);
}
while
(
!
trackEnd
);
}
while
(
!
trackEnd
);
}
}
//#pragma omp section //(逆时针)
//#pragma omp section //(逆时针)
{
{
...
@@ -4698,7 +4694,7 @@ int eyemCountObjectIrregularPartsE(EyemImage tpImage, const char *fileName, cons
...
@@ -4698,7 +4694,7 @@ int eyemCountObjectIrregularPartsE(EyemImage tpImage, const char *fileName, cons
{
{
//不再判断,大概率已经终止
//不再判断,大概率已经终止
found
=
false
;
found
=
false
;
}
}
else
if
(
trackMat
.
ptr
<
uint8_t
>
(
cvRound
(
trackCenterT
.
y
))[
cvRound
(
trackCenterT
.
x
)]
==
255
)
{
else
if
(
trackMat
.
ptr
<
uint8_t
>
(
cvRound
(
trackCenterT
.
y
))[
cvRound
(
trackCenterT
.
x
)]
==
255
)
{
//不再判断,大概率已经终止
//不再判断,大概率已经终止
found
=
false
;
found
=
false
;
...
@@ -4747,9 +4743,9 @@ int eyemCountObjectIrregularPartsE(EyemImage tpImage, const char *fileName, cons
...
@@ -4747,9 +4743,9 @@ int eyemCountObjectIrregularPartsE(EyemImage tpImage, const char *fileName, cons
}
}
trackEnd
=
(
!
found
);
trackEnd
=
(
!
found
);
}
while
(
!
trackEnd
);
}
while
(
!
trackEnd
);
}
}
}
}
}
}
//计数
//计数
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论