ReelCheckParam.cs 3.9 KB
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;


    }
}