Example #1
0
        private static int SaveResultRec(PhotoStruct rec, bool success, CarDataStruct answer)
        {
            if (!success)
            {
                return(0);
            }

            Int32.TryParse(myParams.Value("MarkExceptions"), out int markExceptions);

            int resIns = -1;

            Int32.TryParse(myParams.Value("RecognizeBorder"), out int recognizeBorder);
            Int32.TryParse(myParams.Value("MarkSaveID"), out int markSaveID);
            Int32.TryParse(myParams.Value("MarkLockID"), out int markLockID);

            string str1     = MyTrim(answer.MarkProbStr, 0, 10);
            int    probMark =
                str1.Length > 0
                ? Int32.Parse(str1)
                : 0;
            string str2     = MyTrim(answer.TypeProbStr, 0, 10);
            int    probType =
                str2.Length > 0
                ? Int32.Parse(str2)
                : 0;

            if ((probMark >= recognizeBorder) ||
                (probType >= recognizeBorder))
            {
                string sqlSave = myParams.Value("SqlSaveImageRes");

                string mark        = MyTrim(answer.Mark, 0, 50);
                string modl        = MyTrim(answer.Modl, 0, 50);
                string probMarkStr = probMark.ToString();
                string type        = MyTrim(answer.Type, 0, 50);
                string side        = MyTrim(answer.Side, 0, 50);
                string probTypeStr = probType.ToString();

                string brand = mark + ", " + modl /*+ " " + MyTrim(ans.Generation, 0, 250)*/;
                if (brand == ",  ")
                {
                    brand = string.Empty;
                }

                if (CarTypes.Keys.Contains(type))
                {
                    type = CarTypes[type];
                }

                if (CarTypes.Keys.Contains(side))
                {
                    side = CarTypes[side];
                }

                sqlSave = sqlSave
                          .Replace("##ID##", rec.TargetInfoID.ToString());

                if (probMark >= recognizeBorder)
                {
                    sqlSave = sqlSave
                              .Replace("##brand##", "'" + brand + "'")
                              .Replace("##brandProb##", "'" + probMarkStr + "'");
                }
                else
                {
                    sqlSave = sqlSave
                              .Replace("##brand##", "''")
                              .Replace("##brandProb##", "''");
                }

                if (probType >= recognizeBorder)
                {
                    sqlSave = sqlSave
                              .Replace("##type##", "'" + type + "'")
                              .Replace("##typeProb##", "'" + probTypeStr + "'");
                }
                else
                {
                    sqlSave = sqlSave
                              .Replace("##type##", "''")
                              .Replace("##typeProb##", "''");
                }

                // Console.WriteLine("sqlSave = '" + sqlSave + "'");

                Log(sqlSave, 2);

                bool ok = false;

                try
                {
                    if (conn == null)
                    {
                        RestoreConnection();
                    }

                    SqlCommand command = new SqlCommand(null, conn);
                    command.CommandText = sqlSave;

                    command.Prepare();
                    resIns = command.ExecuteNonQuery();

                    cntSave++;
                    ok = true;
                }
                catch (Exception e)
                {
                    cntLock++;
                    ok = false;
                }
                finally
                {
                    // Console.WriteLine(" -> -> finally ");
                }

                if (ok)
                {
                    if (markSaveID > 0)
                    {
                        Console.Write("+ " + (markSaveID > 1 ? (rec.TargetInfoID.ToString() + ", ") : ""));
                    }
                }
                else
                {
                    if (markLockID > 0)
                    {
                        Console.Write("X " + (markSaveID > 1 ? (rec.TargetInfoID.ToString() + ", ") : ""));
                    }
                }
            }

            return(resIns);
        }
Example #2
0
        public int ProcessPhotoBath(List <PhotoStruct> photoList,
                                    ref TimeSpan ts_Process, ref TimeSpan ts_Pauses)
        {
            //Console.WriteLine("ProcessPhotoBath()");
            Int32.TryParse(myParams.Value("UseMultyProc"), out int useMultyProc);
            Int32.TryParse(myParams.Value("IDsSaveStep"), out int idsSaveStep);
            Int32.TryParse(myParams.Value("OneFilePause_ms"), out int oneFilePause_ms);

            // сбросим счётчики распознавания
            cntPrep = 0;
            cntReco = 0;
            cntSave = 0;
            cntLock = 0;
            long lastId = 0;

            for (int i = 0; i < photoList.Count; i++)
            {
                var rec = photoList[i];
                lastId = rec.TargetInfoID;
                int resRec = 0;

                //Console.WriteLine("CreateDirectories()");
                CreateDirectories();

                CarDataStruct answer = new CarDataStruct();
                string        fname  = rec.TargetInfoID.ToString();

                //Console.WriteLine("RecognizeImageByteArr()");
                if (rec.bufLen > 1000)
                {
                    Stopwatch sw_reco = new Stopwatch();
                    sw_reco.Start();
                    resRec = CarModelSdk.RecognizeImageByteArr(out answer, rec.buf, rec.bufLen, rec.ImgFileName);
                    sw_reco.Stop();
                    ts_Process += sw_reco.Elapsed;
                }
                else
                {
                    continue;
                }

                //Console.WriteLine("MyTrim(answer.Name, 0, 250)");
                string resName = MyTrim(answer.Name, 0, 250);

                if (resRec > 0)
                {
                    cntReco++;

                    var resSaveToDB = SaveResultRec(rec, true, answer);

                    if (oneFilePause_ms > 0)
                    {
                        Stopwatch sw_pause = new Stopwatch();
                        sw_pause.Start();
                        Wait(oneFilePause_ms);
                        sw_pause.Stop();
                        ts_Pauses += sw_pause.Elapsed;
                    }
                }

                // запомним lastId
                int ii = i + 1;
                if (ii % idsSaveStep == 0 &&
                    ii > 0)
                {
                    long idFrom = lastId + 1;
                    updateParamInDB(_myName + "_ID_From", idFrom.ToString());
                    //saveParamToDB(_myName + "_ID_From", idFrom.ToString());
                }
            }

            cntPrep = photoList.Count;

            // запомним lastId
            long idFromRes = lastId + 1;

            updateParamInDB(_myName + "_ID_From", idFromRes.ToString());
            //saveParamToDB(_myName + "_ID_From", idFromRes.ToString());

            return(cntReco);
        }