我目前正在使用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;
}
答案 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;