Commit c8b734a6 LN

1.短皮带线4mask修改。2.料盘视频参数改为可配置。

1 个父辈 e14fa838
...@@ -481,22 +481,22 @@ namespace OnlineStore.AssemblyLine ...@@ -481,22 +481,22 @@ namespace OnlineStore.AssemblyLine
private void btnLine1Check_Click(object sender, EventArgs e) private void btnLine1Check_Click(object sender, EventArgs e)
{ {
ReelCheck(btnLine1Check.Text, equipBean.Config.CameraName_1); ReelCheck(btnLine1Check.Text, equipBean.Config.CameraName_1,equipBean.TrayLine1.Id, equipBean.TrayLine1.reelParam);
} }
private void btnLine2Check_Click(object sender, EventArgs e) private void btnLine2Check_Click(object sender, EventArgs e)
{ {
ReelCheck(btnLine2Check.Text, equipBean.Config.CameraName_2); ReelCheck(btnLine2Check.Text, equipBean.Config.CameraName_2, equipBean.TrayLine2.Id, equipBean.TrayLine2.reelParam);
} }
private void ReelCheck(string text, string cameraName) private void ReelCheck(string text, string cameraName,int id,ReelCheckParam param)
{ {
if (String.IsNullOrEmpty(cameraName)) if (String.IsNullOrEmpty(cameraName))
{ {
return; return;
} }
string imgName = ""; string imgName = "";
int[] result = ReelCheckUtil.ReelCheck(equipBase.DeviceID, cameraName,out imgName); int[] result = ReelCheckUtil.ReelCheck(id, cameraName,param,out imgName);
if (result != null && result.Length == 2) if (result != null && result.Length == 2)
{ {
MessageBox.Show("相机[" + cameraName + "]检测料盘结果:[" + result[0] + "][" + result[1] + "],图片:"+imgName,text+"结果",MessageBoxButtons.OK,MessageBoxIcon.Information); MessageBox.Show("相机[" + cameraName + "]检测料盘结果:[" + result[0] + "][" + result[1] + "],图片:"+imgName,text+"结果",MessageBoxButtons.OK,MessageBoxIcon.Information);
......
...@@ -632,4 +632,20 @@ PRO,0,短皮带线2监控相机,CameraName_2,r_camera_2,,,,, ...@@ -632,4 +632,20 @@ PRO,0,短皮带线2监控相机,CameraName_2,r_camera_2,,,,,
20221124修改: 20221124修改:
1.清空入库任务时清空托盘。 1.清空入库任务时清空托盘。
2.入料夹爪抓料后如果伺服检测信号亮,从服务器获取库位成功继续入库,未取到尺寸直接NG. 2.入料夹爪抓料后如果伺服检测信号亮,从服务器获取库位成功继续入库,未取到尺寸直接NG.
3.皮带线视觉识别图片保存功能。
\ No newline at end of file \ No newline at end of file
3.皮带线视觉识别图片保存功能。
Config_DischargeLine_1.csv 需要增加配置:
PRO,0,短皮带线2监控提取上限[HSV],Camera_2_RangeL,57;15;0,,,,,
PRO,0,短皮带线2监控提取上限[HSV],Camera_2_RangeU,93;255;255,,,,,
PRO,0,短皮带线2监控区域1,Camera_2_Rect1,1120;737;296;282,,,,,
PRO,0,短皮带线2监控区域2,Camera_2_Rect2,1405;611;236;202,,,,,
Config_DischargeLine_2.csv 需要增加配置:
PRO,0,短皮带线1监控提取上限[HSV],Camera_1_RangeL,70;10;10,,,,,
PRO,0,短皮带线1监控提取上限[HSV],Camera_1_RangeU,95;255;255,,,,,
PRO,0,短皮带线1监控区域1,Camera_1_Rect1,1161;1079;432;395,,,,,
PRO,0,短皮带线1监控区域2,Camera_1_Rect2,1693;1078;302;233,,,,,
...@@ -92,6 +92,7 @@ ...@@ -92,6 +92,7 @@
<Compile Include="baan\WaitUtil.cs" /> <Compile Include="baan\WaitUtil.cs" />
<Compile Include="deviceLibrary\halcon\EyemManager.cs" /> <Compile Include="deviceLibrary\halcon\EyemManager.cs" />
<Compile Include="deviceLibrary\reelCheck\MyCamera.cs" /> <Compile Include="deviceLibrary\reelCheck\MyCamera.cs" />
<Compile Include="deviceLibrary\reelCheck\ReelCheckParam.cs" />
<Compile Include="deviceLibrary\reelCheck\ReelCheckUtil.cs" /> <Compile Include="deviceLibrary\reelCheck\ReelCheckUtil.cs" />
<Compile Include="deviceLibrary\halcon\CodeManager.cs" /> <Compile Include="deviceLibrary\halcon\CodeManager.cs" />
<Compile Include="deviceLibrary\halcon\RemoteDecodeHelper.cs" /> <Compile Include="deviceLibrary\halcon\RemoteDecodeHelper.cs" />
......
...@@ -2,6 +2,10 @@ ...@@ -2,6 +2,10 @@
PRO,0,设备是否处于调试状态(1=调试,0=正常),IsDebug,0,,,,, PRO,0,设备是否处于调试状态(1=调试,0=正常),IsDebug,0,,,,,
PRO,0,扫码的相机名称(多个用#分隔),CameraNameList,GigE:MV-CE200-10GC (00D76546944),,,,, PRO,0,扫码的相机名称(多个用#分隔),CameraNameList,GigE:MV-CE200-10GC (00D76546944),,,,,
PRO,0,短皮带线2监控相机,CameraName_2,r_camera_2,,,,, PRO,0,短皮带线2监控相机,CameraName_2,r_camera_2,,,,,
PRO,0,短皮带线2监控提取上限[HSV],Camera_2_RangeL,57;15;0,,,,,
PRO,0,短皮带线2监控提取上限[HSV],Camera_2_RangeU,93;255;255,,,,,
PRO,0,短皮带线2监控区域1,Camera_2_Rect1,1120;737;296;282,,,,,
PRO,0,短皮带线2监控区域2,Camera_2_Rect2,1405;611;236;202,,,,,
,,,,,,,,, ,,,,,,,,,
DI,0,出料皮带线体1急停,DLine_SuddenStop,0,PRO_AOI_IP_2,0,出料皮带线体1急停,X021,X021 DI,0,出料皮带线体1急停,DLine_SuddenStop,0,PRO_AOI_IP_2,0,出料皮带线体1急停,X021,X021
DI,0,出料皮带线体1复位,DLine_Reset,1,PRO_AOI_IP_2,0,出料皮带线体1复位,X022,X022 DI,0,出料皮带线体1复位,DLine_Reset,1,PRO_AOI_IP_2,0,出料皮带线体1复位,X022,X022
......
...@@ -2,6 +2,10 @@ ...@@ -2,6 +2,10 @@
PRO,0,设备是否处于调试状态(1=调试,0=正常),IsDebug,0,,,,, PRO,0,设备是否处于调试状态(1=调试,0=正常),IsDebug,0,,,,,
PRO,0,扫码的相机名称(多个用#分隔),CameraNameList,GigE:MV-CE200-10GC (00D76546876),,,,, PRO,0,扫码的相机名称(多个用#分隔),CameraNameList,GigE:MV-CE200-10GC (00D76546876),,,,,
PRO,0,短皮带线1监控相机,CameraName_1,r_camera_1,,,,, PRO,0,短皮带线1监控相机,CameraName_1,r_camera_1,,,,,
PRO,0,短皮带线1监控提取上限[HSV],Camera_1_RangeL,70;10;10,,,,,
PRO,0,短皮带线1监控提取上限[HSV],Camera_1_RangeU,95;255;255,,,,,
PRO,0,短皮带线1监控区域1,Camera_1_Rect1,1161;1079;432;395,,,,,
PRO,0,短皮带线1监控区域2,Camera_1_Rect2,1693;1078;302;233,,,,,
,,,,,,,,, ,,,,,,,,,
DI,0,出料皮带线体2急停,DLine_SuddenStop,0,PRO_AOI_IP_3,0,出料皮带线体2急停,X041,X041 DI,0,出料皮带线体2急停,DLine_SuddenStop,0,PRO_AOI_IP_3,0,出料皮带线体2急停,X041,X041
DI,0,出料皮带线体2复位,DLine_Reset,1,PRO_AOI_IP_3,0,出料皮带线体2复位,X042,X042 DI,0,出料皮带线体2复位,DLine_Reset,1,PRO_AOI_IP_3,0,出料皮带线体2复位,X042,X042
......
...@@ -56,6 +56,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -56,6 +56,10 @@ namespace OnlineStore.DeviceLibrary
TrayLine1 = new OutTrayLineBean(330 + ((id - 1) * 3 + 1), "皮带线" + "_" + ((id - 1) * 3 + 1) + " ", IO_Type.ExitLocation_Check1, IO_Type.ExitTray_Check1, IO_Type.DLine_Run1, IO_Type.MiddleTray_Check3, this.DeviceID, IO_Type.DLine_Brush1, Config.CameraName_1); TrayLine1 = new OutTrayLineBean(330 + ((id - 1) * 3 + 1), "皮带线" + "_" + ((id - 1) * 3 + 1) + " ", IO_Type.ExitLocation_Check1, IO_Type.ExitTray_Check1, IO_Type.DLine_Run1, IO_Type.MiddleTray_Check3, this.DeviceID, IO_Type.DLine_Brush1, Config.CameraName_1);
TrayLine2 = new OutTrayLineBean(330 + ((id - 1) * 3 + 2), "皮带线" + "_" + ((id - 1) * 3 + 2) + " ", IO_Type.ExitLocation_Check2, IO_Type.ExitTray_Check2, IO_Type.DLine_Run2, IO_Type.EntryTray_Check3, this.DeviceID, IO_Type.DLine_Brush2, Config.CameraName_2); TrayLine2 = new OutTrayLineBean(330 + ((id - 1) * 3 + 2), "皮带线" + "_" + ((id - 1) * 3 + 2) + " ", IO_Type.ExitLocation_Check2, IO_Type.ExitTray_Check2, IO_Type.DLine_Run2, IO_Type.EntryTray_Check3, this.DeviceID, IO_Type.DLine_Brush2, Config.CameraName_2);
} }
TrayLine1.reelParam = ReelCheckParam.getParam(TrayLine1.Id, config.CameraName_1, config.Camera_1_RangeL, config.Camera_1_RangeU, config.Camera_1_Rect1, config.Camera_1_Rect2);
TrayLine2.reelParam = ReelCheckParam.getParam(TrayLine2.Id, config.CameraName_2, config.Camera_2_RangeL, config.Camera_2_RangeU, config.Camera_2_Rect1, config.Camera_2_Rect2);
Line3Turn = new LineTurnBean(DeviceID, IO_Type.DLine_Run3, IO_Type.Location_Check3); Line3Turn = new LineTurnBean(DeviceID, IO_Type.DLine_Run3, IO_Type.Location_Check3);
if ((DeviceID % 100).Equals(1)) if ((DeviceID % 100).Equals(1))
{ {
......
...@@ -32,13 +32,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -32,13 +32,14 @@ namespace OnlineStore.DeviceLibrary
private string Name = ""; private string Name = "";
private LineTurnBean lineRun = null; private LineTurnBean lineRun = null;
private string cameraName = ""; private string cameraName = "";
public ReelCheckParam reelParam = null;
internal LineMoveInfo MoveInfo = null; internal LineMoveInfo MoveInfo = null;
public DischargeLine equipBean public DischargeLine equipBean
{ {
get { return LineManager.Line.DisLineMap[equipBeanId]; } get { return LineManager.Line.DisLineMap[equipBeanId]; }
} }
internal bool Line3CanRun = true; internal bool Line3CanRun = true;
private int Id = 0; public int Id = 0;
public OutTrayLineBean(int id, string name, string exitLocationS, string exittrayS, string lineRundo, string line3checkDi, int dId, string brushDo,string cName) public OutTrayLineBean(int id, string name, string exitLocationS, string exittrayS, string lineRundo, string line3checkDi, int dId, string brushDo,string cName)
{ {
this.Id = id; this.Id = id;
...@@ -336,7 +337,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -336,7 +337,7 @@ namespace OnlineStore.DeviceLibrary
//如果有监控相机 //如果有监控相机
if (!cameraName.Equals("")) if (!cameraName.Equals(""))
{ {
int[] results = ReelCheckUtil.ReelCheck(equipBean.DeviceID, cameraName,out imgName); int[] results = ReelCheckUtil.ReelCheck(equipBean.DeviceID, cameraName,reelParam,out imgName);
if (results != null && results.Length == 2) if (results != null && results.Length == 2)
{ {
exitHasTray = (results[0] == 1); exitHasTray = (results[0] == 1);
......
...@@ -598,7 +598,6 @@ namespace OnlineStore.DeviceLibrary ...@@ -598,7 +598,6 @@ namespace OnlineStore.DeviceLibrary
bool findRightCode = false; bool findRightCode = false;
try try
{ {
LogUtil.info(deviceName + " 【" + cameraName + "】视觉识别有料【" + FormUtil.GetSpanStr(DateTime.Now - startTime) + "】,开始扫码");
ho_Image = Camera._cam.CaptureOnImage(cameraName, out bmp); ho_Image = Camera._cam.CaptureOnImage(cameraName, out bmp);
if (ho_Image == null) if (ho_Image == null)
...@@ -618,7 +617,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -618,7 +617,8 @@ namespace OnlineStore.DeviceLibrary
if (!hasReel) if (!hasReel)
{ {
return (false, codeList); return (false, codeList);
} }
LogUtil.info(deviceName + " 【" + cameraName + "】视觉识别有料【" + FormUtil.GetSpanStr(DateTime.Now - startTime) + "】,开始扫码");
string r = ""; string r = "";
......
using OnlineStore.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OnlineStore.DeviceLibrary
{
public class ReelCheckParam
{
public static ReelCheckParam getParam(int deviceID, string cameraName, string rangeL, string rangeU, string rect1, string rect2)
{
ReelCheckParam param = new ReelCheckParam();
param.cameraName = cameraName;
param.deviceId = deviceID;
//短皮带线三 默认参数
param.dpRangeL = new List<double> { 70, 10, 10 };
param.dpRangeU = new List<double> { 95, 255, 255 };
param.rect1 = new List<int> { 1161, 1079, 432, 395 };
param.rect2 = new List<int> { 1693, 1078, 302, 233 };
if (deviceID.Equals(332))
{
//短皮带线2默认参数
param.dpRangeL = new List<double> { 57, 15, 0 };
param.dpRangeU = new List<double> { 93, 255, 255 };
param.rect1 = new List<int> { 1120, 737, 296, 282 };
param.rect2 = new List<int> { 1405, 611, 236, 202 };
}
List<double> dpRangeL = param.toDoubleArray(rangeL);
List<double> dpRangeU = param.toDoubleArray(rangeU);
List<int> rect1List = param.toIntArray(rect1);
List<int> rect2List = param.toIntArray(rect2);
if (dpRangeL.Count >= 3)
{
param.dpRangeL = new List<double> { dpRangeL[0], dpRangeL[1], dpRangeL[2] };
}
if (dpRangeU.Count >= 3)
{
param.dpRangeU = new List<double> { dpRangeU[0], dpRangeU[1], dpRangeU[2] };
}
if (rect1List.Count >= 4)
{
param.rect1 = new List<int > { rect1List[0], rect1List[1], rect1List[2], rect1List[3] };
}
if (rect2List.Count >= 4)
{
param.rect2 = new List<int> { rect2List[0], rect2List[1], rect2List[2], rect2List[3] };
}
LogUtil.info($"ReelCheckParam 皮带线ID {deviceID},{cameraName}" +
$",dpRangeL: {String.Join(",",param.dpRangeL.ToArray())}" +
$", dpRangeU: {String.Join(",", param.dpRangeU.ToArray())}" +
$", rect1: {String.Join(",", param.rect1.ToArray())}" +
$", rect2 {String.Join(",", param.rect2.ToArray())}");
return param;
}
public List<double> toDoubleArray(String str)
{
List<double> result = new List<double>();
try
{
string[] array = str.Split(';');
if (array.Length > 0)
{
foreach (string a in array)
{
double v = Convert.ToDouble(a);
result.Add(v);
}
}
}
catch (Exception ex)
{
}
return result;
}
public List<int> toIntArray(String str)
{
List<int> result = new List<int>();
try
{
string[] array = str.Split(';');
if (array.Length > 0)
{
foreach (string a in array)
{
int v = Convert.ToInt32(a);
result.Add(v);
}
}
}
catch (Exception ex)
{
}
return result;
}
public string cameraName;
public int deviceId;
// 提取下限
public List<double> dpRangeL;
//提取上限[H S V]
public List<double> dpRangeU;
//范围1
public List<int> rect1;
//范围2
public List<int> rect2;
}
}
...@@ -71,7 +71,7 @@ dMinorStep 步进,默认1.0。 ...@@ -71,7 +71,7 @@ dMinorStep 步进,默认1.0。
///////////////////使用/////////////////// ///////////////////使用///////////////////
public static int[] ReelCheck(int deviceID, string cameraName, out string imgName) public static int[] ReelCheck(int deviceID, string cameraName,ReelCheckParam param, out string imgName)
{ {
imgName = ""; imgName = "";
if (String.IsNullOrEmpty(cameraName)) if (String.IsNullOrEmpty(cameraName))
...@@ -109,19 +109,23 @@ dMinorStep 步进,默认1.0。 ...@@ -109,19 +109,23 @@ dMinorStep 步进,默认1.0。
EyemImage image = eyemCvtToEyemImage(bitmap); EyemImage image = eyemCvtToEyemImage(bitmap);
//绿色分割模型 //绿色分割模型
EyemHSVModel tpHsvModel = new EyemHSVModel(); EyemHSVModel tpHsvModel = new EyemHSVModel();
tpHsvModel.dpRangeLExt = new double[] { 0, 0, 0 };
tpHsvModel.dpRangeUExt = new double[] { 0, 0, 0 };
tpHsvModel.dpRangeL = new double[] { param.dpRangeL[0],param.dpRangeL[1],param.dpRangeL[2] };
tpHsvModel.dpRangeU = new double[] { param.dpRangeU[0],param.dpRangeU[1],param.dpRangeU[2] };
//tpHsvModel.dpRangeL = new double[] { 55, 10, 35 }; tpHsvModel.dpRangeU = new double[] { 100, 255, 255 }; //tpHsvModel.dpRangeL = new double[] { 55, 10, 35 }; tpHsvModel.dpRangeU = new double[] { 100, 255, 255 };
//tpHsvModel.dpRangeLExt = new double[] { 0, 0, 0 }; tpHsvModel.dpRangeUExt = new double[] { 0, 0, 0 }; //tpHsvModel.dpRangeLExt = new double[] { 0, 0, 0 }; tpHsvModel.dpRangeUExt = new double[] { 0, 0, 0 };
//短皮带线三
tpHsvModel.dpRangeL = new double[] { 78, 10, 60 }; tpHsvModel.dpRangeU = new double[] { 100, 255, 255 };
tpHsvModel.dpRangeLExt = new double[] { 0, 0, 0 }; tpHsvModel.dpRangeUExt = new double[] { 0, 0, 0 };
if (deviceID.Equals(301)) ////短皮带线三
{ //tpHsvModel.dpRangeL = new double[] { 70, 10, 10 }; tpHsvModel.dpRangeU = new double[] { 95, 255, 255 };
//短皮带线二 //tpHsvModel.dpRangeLExt = new double[] { 0, 0, 0 }; tpHsvModel.dpRangeUExt = new double[] { 0, 0, 0 };
tpHsvModel.dpRangeL = new double[] { 57, 15, 0 }; tpHsvModel.dpRangeU = new double[] { 93, 255, 255 };
tpHsvModel.dpRangeLExt = new double[] { 0, 0, 0 }; tpHsvModel.dpRangeUExt = new double[] { 0, 0, 0 }; //if (deviceID.Equals(301))
} //{
// //短皮带线二
// tpHsvModel.dpRangeL = new double[] { 57, 15, 0 }; tpHsvModel.dpRangeU = new double[] { 93, 255, 255 };
// tpHsvModel.dpRangeLExt = new double[] { 0, 0, 0 }; tpHsvModel.dpRangeUExt = new double[] { 0, 0, 0 };
//}
//裁剪区域 //裁剪区域
EyemRect tpRoi = new EyemRect(); EyemRect tpRoi = new EyemRect();
...@@ -130,23 +134,23 @@ dMinorStep 步进,默认1.0。 ...@@ -130,23 +134,23 @@ dMinorStep 步进,默认1.0。
tpRoi.iHeight = image.iHeight; tpRoi.iHeight = image.iHeight;
//添加需要监控的位置信息 //添加需要监控的位置信息
List<EyemRect> tpRois = new List<EyemRect>(); List<EyemRect> tpRois = new List<EyemRect>();
//EyemRect roi1 = new EyemRect();
//roi1.iXs = 533; roi1.iYs = 187; roi1.iWidth = 345; roi1.iHeight = 310;
//EyemRect roi2 = new EyemRect();
//roi2.iXs = 900; roi2.iYs = 137; roi2.iWidth = 240; roi2.iHeight = 197;
EyemRect roi1 = new EyemRect(); EyemRect roi1 = new EyemRect();
EyemRect roi2 = new EyemRect(); EyemRect roi2 = new EyemRect();
roi1.iXs = 470; roi1.iYs = 143; roi1.iWidth = 411; roi1.iHeight = 387; roi1.iXs = param.rect1[0]; roi1.iYs = param.rect1[1]; roi1.iWidth = param.rect1[2]; roi1.iHeight = param.rect1[3];
roi2.iXs = 882; roi2.iYs = 84; roi2.iWidth = 317; roi2.iHeight = 251; roi2.iXs = param.rect2[0]; roi2.iYs = param.rect2[1]; roi2.iWidth = param.rect2[2]; roi2.iHeight = param.rect2[3];
//roi1.iXs = 470; roi1.iYs = 143; roi1.iWidth = 411; roi1.iHeight = 387;
//roi2.iXs = 882; roi2.iYs = 84; roi2.iWidth = 317; roi2.iHeight = 251;
//roi1.iXs = 1161; roi1.iYs = 1079; roi1.iWidth = 432; roi1.iHeight = 395;
//roi2.iXs = 1693; roi2.iYs = 1078; roi2.iWidth = 302; roi2.iHeight = 233;
//短皮带线三 ////短皮带线三
if (deviceID.Equals(301)) //if (deviceID.Equals(301))
{ //{
//短皮带线二 // //短皮带线二
roi1.iXs = 1120; roi1.iYs = 737; roi1.iWidth = 296; roi1.iHeight = 282; // roi1.iXs = 1120; roi1.iYs = 737; roi1.iWidth = 296; roi1.iHeight = 282;
roi2.iXs = 1405; roi2.iYs = 611; roi2.iWidth = 236; roi2.iHeight = 202; // roi2.iXs = 1405; roi2.iYs = 611; roi2.iWidth = 236; roi2.iHeight = 202;
} //}
tpRois.Add(roi1); tpRois.Add(roi2); tpRois.Add(roi1); tpRois.Add(roi2);
...@@ -291,37 +295,7 @@ dMinorStep 步进,默认1.0。 ...@@ -291,37 +295,7 @@ dMinorStep 步进,默认1.0。
} }
return tpImage; return tpImage;
} }
//public static void eyemCvtToEyemImage(Bitmap bitmap, out EyemImage tpImage)
//{
// int channels = 0;
// switch (bitmap.PixelFormat)
// {
// case PixelFormat.Format8bppIndexed:
// channels = 1;
// break;
// case PixelFormat.Format24bppRgb:
// channels = 3;
// break;
// case PixelFormat.Format32bppArgb:
// channels = 4;
// break;
// default:
// break;
// }
// //锁定数据区
// BitmapData bd = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height),
// ImageLockMode.ReadOnly, bitmap.PixelFormat);
// try
// {
// eyemImageFromBitmap(bd.Scan0, bd.Width, bd.Height, 0, channels, out tpImage);
// }
// finally
// {
// bitmap.UnlockBits(bd);
// }
//}
public static IntPtr eyemStructArray2IntPtr<T>(T[] tpArray) public static IntPtr eyemStructArray2IntPtr<T>(T[] tpArray)
{ {
if (tpArray == null) if (tpArray == null)
...@@ -387,4 +361,5 @@ dMinorStep 步进,默认1.0。 ...@@ -387,4 +361,5 @@ dMinorStep 步进,默认1.0。
} }
} }
} }

6.6 KB | 宽: | 高:

15.1 KB | 宽: | 高:

source/DeviceLibrary/mask.png
source/DeviceLibrary/mask.png
source/DeviceLibrary/mask.png
source/DeviceLibrary/mask.png
  • 两方对比
  • 交换覆盖
  • 透明覆盖
...@@ -39,12 +39,52 @@ namespace OnlineStore.LoadCSVLibrary ...@@ -39,12 +39,52 @@ namespace OnlineStore.LoadCSVLibrary
[ConfigProAttribute("CameraName_1",false)] [ConfigProAttribute("CameraName_1",false)]
public string CameraName_1 { get; set; } public string CameraName_1 { get; set; }
/// <summary> /// <summary>
/// PRO,0,短皮带线1监控提取上限[HSV],Camera_1_RangeL,78;10;60,,,,,
/// </summary>
[ConfigProAttribute("Camera_1_RangeL", false)]
public string Camera_1_RangeL { get; set; }
/// <summary>
/// PRO,0,短皮带线1监控提取上限[HSV],Camera_1_RangeU,100;255;255
/// </summary>
[ConfigProAttribute("Camera_1_RangeU", false)]
public string Camera_1_RangeU { get; set; }
/// <summary>
/// PRO,0,短皮带线1监控区域1,Camera_1_Rect1,470;143;411;387
/// </summary>
[ConfigProAttribute("Camera_1_Rect1", false)]
public string Camera_1_Rect1 { get; set; }
/// <summary>
/// PRO,0,短皮带线1监控区域2,Camera_1_Rect2,882;84;317;251
/// </summary>
[ConfigProAttribute("Camera_1_Rect2", false)]
public string Camera_1_Rect2 { get; set; }
/// <summary>
/// PRO 0 短皮带线2监控相机 CameraName_2 /// PRO 0 短皮带线2监控相机 CameraName_2
/// </summary> /// </summary>
[ConfigProAttribute("CameraName_2",false)] [ConfigProAttribute("CameraName_2",false)]
public string CameraName_2 { get; set; } public string CameraName_2 { get; set; }
/// <summary>
/// PRO,0,短皮带线1监控提取上限[HSV],Camera_2_RangeL,78;10;60,,,,,
/// </summary>
[ConfigProAttribute("Camera_2_RangeL", false)]
public string Camera_2_RangeL { get; set; }
/// <summary>
/// PRO,0,短皮带线1监控提取上限[HSV],Camera_2_RangeU,100;255;255
/// </summary>
[ConfigProAttribute("Camera_2_RangeU", false)]
public string Camera_2_RangeU { get; set; }
/// <summary>
/// PRO,0,短皮带线1监控区域1,Camera_2_Rect1,470;143;411;387
/// </summary>
[ConfigProAttribute("Camera_2_Rect1", false)]
public string Camera_2_Rect1 { get; set; }
/// <summary>
/// PRO,0,短皮带线1监控区域2,Camera_2_Rect2,882;84;317;251
/// </summary>
[ConfigProAttribute("Camera_2_Rect2", false)]
public string Camera_2_Rect2 { get; set; }
private List<string> CameraList = null; private List<string> CameraList = null;
...@@ -65,5 +105,7 @@ namespace OnlineStore.LoadCSVLibrary ...@@ -65,5 +105,7 @@ namespace OnlineStore.LoadCSVLibrary
} }
return CameraList; return CameraList;
} }
} }
} }
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!