Exemple #1
0
 public bool UpdateT_JudgeParamer(T_JudgeParamer t_JudgeParamer)
 {
     return(mapper.Update("UpdateT_JudgeParamer", t_JudgeParamer) >= 0);
 }
Exemple #2
0
 public int InsertT_JudgeParamer(T_JudgeParamer t_JudgeParamer)
 {
     return(Convert.ToInt32(mapper.Insert("InsertT_JudgeParamer", t_JudgeParamer)));
 }
Exemple #3
0
 public bool UpdateT_JudgeParamer(T_JudgeParamer t_JudgeParamer)
 {
     return(JDAO.UpdateT_JudgeParamer(t_JudgeParamer));
 }
Exemple #4
0
        /// <summary>
        /// 解析数码管中的数字
        /// </summary>
        /// <param name="Src">原始图片</param>
        /// <param name="TJList">分析管所在的位置参数</param>
        /// <param name="TH">图像二值华阀值</param>
        /// <param name="BrushW">LED笔画的宽度</param>
        /// <returns></returns>
        public static string AnalsyAreaDigitalTube(Bitmap Src, IEnumerable <Models.Judger.T_JudgeParamer> TJList, byte TH, int BrushW, out int[] vals)
        {
            vals = new int[TJList.Count()];
            try
            {
                string str = string.Empty;
                for (int i = 0; i < TJList.Count(); i++)
                {
                    T_JudgeParamer j  = TJList.ElementAt(i);
                    Bitmap         bm = Cut(Src, new Point(j.StartX, j.StartY), j.EndX - j.StartX, j.EndY - j.StartY);
                    bm = Threshoding(bm, TH);
                    int area0 = 0, area1 = 0, area2 = 0, area3 = 0, area4 = 0, area5 = 0, area6 = 0;

                    int        width  = bm.Width;
                    int        height = bm.Height;
                    BitmapData data   = bm.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
                    unsafe
                    {
                        byte *p = (byte *)data.Scan0;
                        int   offset = data.Stride - width * 4;
                        int   MiddX = width / 2, MiddY = height / 2;
                        for (int y = 0; y < height; y++)
                        {
                            bool IsBreaked = false;
                            for (int x = 0; x < width; x++)
                            {
                                if (p[0] == 255)
                                {
                                    ///分布在垂直中线附近
                                    if (Math.Abs(x - MiddX) < BrushW / 2)
                                    {
                                        if (Math.Abs(y - MiddY) <= BrushW / 2)
                                        {
                                            area3++;
                                        }
                                        else if (y > MiddY && x < MiddX)
                                        {
                                            area6++;
                                        }
                                        else if (y < MiddY && x > MiddX)
                                        {
                                            area0++;
                                        }
                                    }
                                    else if (x > MiddX) //分布在右边
                                    {
                                        int YDiff = Math.Abs(y - MiddY);
                                        if (YDiff >= BrushW && YDiff <= BrushW * 1.5)
                                        {
                                            if (y > MiddY)
                                            {
                                                area5++;
                                            }
                                            else
                                            {
                                                area2++;
                                            }
                                        }
                                    }
                                    else//分布在左边
                                    {
                                        int YDiff = Math.Abs(y - MiddY);
                                        if (YDiff >= BrushW && YDiff <= BrushW * 1.5)
                                        {
                                            if (y > MiddY)
                                            {
                                                area4++;
                                            }
                                            else
                                            {
                                                area1++;
                                            }
                                        }
                                    }
                                }
                                p += 4;
                            }
                            if (IsBreaked)
                            {
                                break;
                            }
                            p += offset;
                        }
                        bm.UnlockBits(data);
                    }
                    bm.Dispose();
                    int MinCount = 5;
                    if (area0 > MinCount && area1 > MinCount && area2 > MinCount && area3 <= MinCount && area4 > MinCount && area5 > MinCount && area6 > MinCount)
                    {
                        vals[i] = 0;
                    }
                    else if (area0 <= MinCount && area1 <= MinCount && area2 > MinCount && area3 <= MinCount && area4 <= MinCount && area5 > MinCount && area6 <= MinCount)
                    {
                        vals[i] = 1;
                    }
                    else if (area0 > MinCount && area1 <= MinCount && area2 > MinCount && area3 > MinCount && area4 > MinCount && area5 <= MinCount && area6 > MinCount)
                    {
                        vals[i] = 2;
                    }
                    else if (area0 > MinCount && area1 <= MinCount && area2 > MinCount && area3 > MinCount && area4 <= MinCount && area5 > MinCount && area6 > MinCount)
                    {
                        vals[i] = 3;
                    }
                    else if (area0 <= MinCount && area1 > MinCount && area2 > MinCount && area3 > MinCount && area4 <= MinCount && area5 > MinCount && area6 <= MinCount)
                    {
                        vals[i] = 4;
                    }
                    else if (area0 > MinCount && area1 > MinCount && area2 <= MinCount && area3 > MinCount && area4 <= MinCount && area5 > MinCount && area6 > MinCount)
                    {
                        vals[i] = 5;
                    }
                    else if (area0 > MinCount && area1 > MinCount && area2 <= MinCount && area3 > MinCount && area4 > MinCount && area5 > MinCount && area6 > MinCount)
                    {
                        vals[i] = 6;
                    }
                    else if (area0 > MinCount && area1 <= MinCount && area2 > MinCount && area3 <= MinCount && area4 < MinCount && area5 > MinCount && area6 <= MinCount)
                    {
                        vals[i] = 7;
                    }
                    else if (area0 > MinCount && area1 > MinCount && area2 > MinCount && area3 > MinCount && area4 > MinCount && area5 > MinCount && area6 > MinCount)
                    {
                        vals[i] = 8;
                    }
                    else if (area0 > MinCount && area1 > MinCount && area2 > MinCount && area3 > MinCount && area4 <= MinCount && area5 > MinCount && area6 > MinCount)
                    {
                        vals[i] = 9;
                    }
                    str += vals[i];
                }

                return(str);
            }
            catch (Exception exception)
            {
                Tool.AppLogError(exception);
                return("FFF");
            }
        }
Exemple #5
0
 public int InsertT_JudgeParamer(T_JudgeParamer t_JudgeParamer)
 {
     return(JDAO.InsertT_JudgeParamer(t_JudgeParamer));
 }