Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
RC1250-AssemblyLine
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit a0a89200
由
LN
编写于
2023-05-22 10:05:53 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1.出料4处料盘识别优化了下。2.主界面显示 保存扫码图片的复选框,勾选后会报错扫码失败的照片,方便查找皮带线扫码失败原因
1 个父辈
d31df789
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
77 行增加
和
17 行删除
source/AssemblyLineClient/FrmLineStore.Designer.cs
source/AssemblyLineClient/FrmLineStore.cs
source/DeviceLibrary/deviceLibrary/halcon/EyemManager.cs
source/AssemblyLineClient/FrmLineStore.Designer.cs
查看文件 @
a0a8920
...
...
@@ -207,7 +207,7 @@
this
.
chbSaveImage
.
TabIndex
=
203
;
this
.
chbSaveImage
.
Text
=
"保存扫码图片"
;
this
.
chbSaveImage
.
UseVisualStyleBackColor
=
true
;
this
.
chbSaveImage
.
Visible
=
fals
e
;
this
.
chbSaveImage
.
Visible
=
tru
e
;
this
.
chbSaveImage
.
CheckedChanged
+=
new
System
.
EventHandler
(
this
.
chbSaveImage_CheckedChanged
);
//
// groupBox1
...
...
source/AssemblyLineClient/FrmLineStore.cs
查看文件 @
a0a8920
...
...
@@ -1318,6 +1318,7 @@ namespace OnlineStore.AssemblyLine
private
void
btnClear_Click
(
object
sender
,
EventArgs
e
)
{
//EyemManager.ReelCheck(null);
int
num
=
(
int
)
numTrayNum
.
Value
;
if
(
num
<
0
)
{
...
...
source/DeviceLibrary/deviceLibrary/halcon/EyemManager.cs
查看文件 @
a0a8920
...
...
@@ -41,20 +41,24 @@ namespace OnlineStore.DeviceLibrary
{
try
{
Bitmap
b
=
GetReducedImage
(
a
,
a
.
Width
,
a
.
Height
);
//a.Dispose();
//string defI = @"D:\出料-4-20230519-110337371.bmp";
//if (a == null&&File.Exists(defI))
//{
// a = new Bitmap(defI);
//}
EyemImage
image
=
new
EyemImage
();
image
.
iWidth
=
b
.
Width
;
image
.
iHeight
=
b
.
Height
;
image
.
iChannels
=
4
;
image
.
iDepth
=
0
;
//b.Dispose();
//b = new Bitmap("temp.bmp");
//eyemImageRead("temp.bmp", -1, out EyemImage image);
var
bl
=
b
.
LockBits
(
new
Rectangle
(
0
,
0
,
b
.
Width
,
b
.
Height
),
ImageLockMode
.
ReadOnly
,
b
.
PixelFormat
);
image
.
ucpImage
=
bl
.
Scan0
;
//Bitmap b = GetReducedImage(a, a.Width, a.Height);
//EyemImage image = new EyemImage();
//image.iWidth = b.Width;
//image.iHeight = b.Height;
//image.iChannels = b.Channels.;
//image.iDepth = 0;
//var bl = b.LockBits(new Rectangle(0, 0, b.Width, b.Height), ImageLockMode.ReadOnly, b.PixelFormat);
//image.ucpImage = bl.Scan0;
EyemImage
image
=
eyemCvtToEyemImage2
(
a
);
int
ipNum
;
BboxContainer
bboxes
=
new
BboxContainer
();
eyemNNDetector
(
image
,
out
ipNum
,
ref
bboxes
,
out
EyemImage
tpDstImg
);
...
...
@@ -63,14 +67,14 @@ namespace OnlineStore.DeviceLibrary
if
(
record
)
{
var
c
=
eyemCvtToBitmap
(
tpDstImg
);
b
.
Save
(
$
"CameraDebug\\{DateTime.Now:yyyy-MM-dd-HH-mm-ss}.jpg"
);
a
.
Save
(
$
"CameraDebug\\{DateTime.Now:yyyy-MM-dd-HH-mm-ss}.jpg"
);
c
.
Save
(
$
"CameraDebug\\{DateTime.Now:yyyy-MM-dd-HH-mm-ss}_m.jpg"
);
c
.
Dispose
();
}
eyemImageFree
(
ref
tpDstImg
);
//
eyemImageFree(ref image);
b
.
UnlockBits
(
bl
);
b
.
Dispose
();
eyemImageFree
(
ref
image
);
//
b.UnlockBits(bl);
//
b.Dispose();
//for (int i = 0; i < ipNum; i++)
//{ }
...
...
@@ -85,6 +89,53 @@ namespace OnlineStore.DeviceLibrary
}
return
false
;
}
public
unsafe
static
EyemImage
eyemCvtToEyemImage2
(
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
;
case
PixelFormat
.
Format32bppRgb
:
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
;
//分配内存
tpImage
.
ucpImage
=
eyemMallocMemBlock
(
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
.
ucpImage
.
ToPointer
())
+
offsetDst
,
bytesToCopy
,
bytesToCopy
);
}
}
finally
{
bitmap
.
UnlockBits
(
bd
);
}
return
tpImage
;
}
#
region
通用
//读取图像,支持彩色与多深度
...
...
@@ -113,6 +164,14 @@ namespace OnlineStore.DeviceLibrary
private
static
extern
int
eyemNNDetector
(
EyemImage
tpImage
,
out
int
ipNum
,
ref
BboxContainer
container
,
out
EyemImage
tpDstImg
);
[
DllImport
(
"eyemLib.dll"
,
CharSet
=
CharSet
.
None
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
private
static
extern
int
eyemNNDetectorParams
(
float
fConfidence
,
float
fNMSThreshold
);
/// <summary>
/// 从进程中的非托管内存分配指定长度的内存
/// </summary>
/// <param name="cb">长度</param>
/// <returns>指向新分配的内存指针</returns>
[
DllImport
(
"eyemLib.dll"
,
CallingConvention
=
CallingConvention
.
Cdecl
)]
private
static
extern
IntPtr
eyemMallocMemBlock
(
int
cb
);
#
endregion
#
region
结构体
//图像信息
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论