将Kairos配置为仅每5分钟运行一次

时间:2018-07-17 03:45:35

标签: c# loops while-loop

我目前正在使用Kairos来分析视频。

我曾尝试使用Timer(在 while(true)之前),但它的配置方式为cmd提示符每2秒仅显示一行(Kairos still < / em>每秒分析一次视频)。我想要的是Kairos仅每5分钟分析一次视频。我要配置Kairos,而不是cmd提示符。

这是我的代码,我感谢能获得的所有帮助!:

             string[] files1 = Directory.GetFiles("C:/Users/sit/Videos/9/");
            foreach (string file1 in files1) {
                 var timer = new System.Timers.Timer()
                 timer.Interval = 2000;
                 timer.Elapsed += (_s, _e) =>{

                HumanAnalysisService has = null;

                try {

                    has = new HumanAnalysisService("license.xml", "", 20, 4);


                } catch (ApplicationException lie) {
                    Console.WriteLine(lie.Message);
                    return;
                }

                // has = new HumanAnalysisService("license.xml", "", 20, 4);

                /* attach to camera device */
                // has.initUsingCameraSource(0);
                has.initUsingImageSource(file1);

                /* *loop thru the capture feed */

                while(true) {
                    /* pull pull out the next frame */
                    has.pullFrame();

                    /* does the device have more frames */
                    if (has.isFrameEmpty())
                        break;

                    /* process the pulled frame */
                    has.processFrame();

                    /* get the people that are in the current frame*/
                    People people = has.getPeople();

                    System.Console.Write("Media Height: " + has.getMediaSourceHeight());
                    System.Console.Write("Media Width: " + has.getMediaSourceWidth());
                    System.Console.Write("Media Type: " + has.getMediaType());
                    System.Console.Write("Mime Type: " + has.getMediaContentType() + "\n\n");

                    /* print out the info from every person in te frame*/
                    // foreach ( Person person in people )
                    for (int i = 0; i < people.size(); i++) {
                        System.Console.Write("Person id" + people.get(i).id + " , face x coordinate: " + people.get(i).face.x + "\n");
                        System.Console.Write("Person id" + people.get(i).id + " , face y coordinate: " + people.get(i).face.x + "\n");
                        System.Console.Write("Person id" + people.get(i).id + " , face width coordinate: " + people.get(i).face.width + "\n");
                        System.Console.Write("Person id" + people.get(i).id + " , face height coordinate: " + people.get(i).face.height + "\n");
                        System.Console.Write("Person id" + people.get(i).id + " , Emotion - Joy: " + people.get(i).impression.emotion_response.joy_score + "\n");
                        System.Console.Write("Person id" + people.get(i).id + " , Emotion - Surprise: " + people.get(i).impression.emotion_response.surprise_score + "\n");
                        System.Console.Write("Person id" + people.get(i).id + " , Emotion - Anger: " + people.get(i).impression.emotion_response.anger_score + "\n");
                        System.Console.Write("Person id" + people.get(i).id + " , Emotion - Fear: " + people.get(i).impression.emotion_response.fear_score + "\n");
                        System.Console.Write("Person id" + people.get(i).id + " , Emotion - Sadness: " + people.get(i).impression.emotion_response.sadness_score + "\n");
                        System.Console.Write("Person id" + people.get(i).id + " , Emotion - Disgust: " + people.get(i).impression.emotion_response.disgust_score + "\n");

                        using (SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\sit\Desktop\(NEW) LEA WINFORMS\28June_LessonEffectivenessAnalysis\LessonEffectivenessAnalysis\LessonEffectivenessAnalysis\LessonEffectivenessAnalysis\LessonAnalysis.mdf;Integrated Security=True")) {
                            conn.Open();

                            using (SqlCommand cmd1 = new SqlCommand("INSERT INTO TBL_VIDEO(JOY_SCORE,SURPRISE_SCORE,ANGER_SCORE,FEAR_SCORE,SADNESS_SCORE,DISGUST_SCORE) VALUES('" + people.get(i).impression.emotion_response.joy_score.ToString() + "','" + people.get(i).impression.emotion_response.surprise_score.ToString() + "','" + people.get(i).impression.emotion_response.anger_score.ToString() + "','" + people.get(i).impression.emotion_response.fear_score.ToString() + "','" + people.get(i).impression.emotion_response.sadness_score.ToString() + "','" + people.get(i).impression.emotion_response.disgust_score.ToString() + "')", conn)) {

                                using (SqlDataReader dr = cmd1.ExecuteReader()) {

                                }
                            }
                        }
                    }

                };timer.Enabled = true;
            }

1 个答案:

答案 0 :(得分:0)

只需删除while循环就可以为您完成工作,因为您已经在timer.Elapsed方法中调用了代码,还可以将定时器的间隔更改为5000,持续5秒

            timer.Interval = 5000;
            timer.Elapsed += (_s, _e) =>{

                HumanAnalysisService has = null;

                try {

                    has = new HumanAnalysisService("license.xml", "", 20, 4);


                } catch (ApplicationException lie) {
                    Console.WriteLine(lie.Message);
                    return;
                }

                // has = new HumanAnalysisService("license.xml", "", 20, 4);

                /* attach to camera device */
                // has.initUsingCameraSource(0);
                has.initUsingImageSource(file1);

                /* *loop thru the capture feed */


                    /* pull pull out the next frame */
                    has.pullFrame();

                    /* does the device have more frames */
                    if (has.isFrameEmpty())
                        break;

                    /* process the pulled frame */
                    has.processFrame();

                    /* get the people that are in the current frame*/
                    People people = has.getPeople();

                    System.Console.Write("Media Height: " + has.getMediaSourceHeight());
                    System.Console.Write("Media Width: " + has.getMediaSourceWidth());
                    System.Console.Write("Media Type: " + has.getMediaType());
                    System.Console.Write("Mime Type: " + has.getMediaContentType() + "\n\n");

                    /* print out the info from every person in te frame*/
                    // foreach ( Person person in people )
                    for (int i = 0; i < people.size(); i++) {
                        System.Console.Write("Person id" + people.get(i).id + " , face x coordinate: " + people.get(i).face.x + "\n");
                        System.Console.Write("Person id" + people.get(i).id + " , face y coordinate: " + people.get(i).face.x + "\n");
                        System.Console.Write("Person id" + people.get(i).id + " , face width coordinate: " + people.get(i).face.width + "\n");
                        System.Console.Write("Person id" + people.get(i).id + " , face height coordinate: " + people.get(i).face.height + "\n");
                        System.Console.Write("Person id" + people.get(i).id + " , Emotion - Joy: " + people.get(i).impression.emotion_response.joy_score + "\n");
                        System.Console.Write("Person id" + people.get(i).id + " , Emotion - Surprise: " + people.get(i).impression.emotion_response.surprise_score + "\n");
                        System.Console.Write("Person id" + people.get(i).id + " , Emotion - Anger: " + people.get(i).impression.emotion_response.anger_score + "\n");
                        System.Console.Write("Person id" + people.get(i).id + " , Emotion - Fear: " + people.get(i).impression.emotion_response.fear_score + "\n");
                        System.Console.Write("Person id" + people.get(i).id + " , Emotion - Sadness: " + people.get(i).impression.emotion_response.sadness_score + "\n");
                        System.Console.Write("Person id" + people.get(i).id + " , Emotion - Disgust: " + people.get(i).impression.emotion_response.disgust_score + "\n");

                        using (SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\sit\Desktop\(NEW) LEA WINFORMS\28June_LessonEffectivenessAnalysis\LessonEffectivenessAnalysis\LessonEffectivenessAnalysis\LessonEffectivenessAnalysis\LessonAnalysis.mdf;Integrated Security=True")) {
                            conn.Open();

                            using (SqlCommand cmd1 = new SqlCommand("INSERT INTO TBL_VIDEO(JOY_SCORE,SURPRISE_SCORE,ANGER_SCORE,FEAR_SCORE,SADNESS_SCORE,DISGUST_SCORE) VALUES('" + people.get(i).impression.emotion_response.joy_score.ToString() + "','" + people.get(i).impression.emotion_response.surprise_score.ToString() + "','" + people.get(i).impression.emotion_response.anger_score.ToString() + "','" + people.get(i).impression.emotion_response.fear_score.ToString() + "','" + people.get(i).impression.emotion_response.sadness_score.ToString() + "','" + people.get(i).impression.emotion_response.disgust_score.ToString() + "')", conn)) {

                                using (SqlDataReader dr = cmd1.ExecuteReader()) {

                                }
                            }
                        }

                };timer.Enabled = true;