Python闭眼时长标准差脚本怎么使用
短信预约 -IT技能 免费直播动态提醒
这篇文章主要介绍“Python闭眼时长标准差脚本怎么使用”,在日常操作中,相信很多人在Python闭眼时长标准差脚本怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python闭眼时长标准差脚本怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
闭眼时长标准差
平均闭眼时长:识别一分钟内闭眼次数以及每次闭眼的时长,将每次闭眼的时长进行累计相加,最终再取平均值
闭眼标准差公式
数据样本格式
文本内容
代码
遍历文件夹中所有的txt文本文件
#遍历文件夹中的所有txt文件def scanner_txt(inputclass="lazy" data-src,txt_list): file_list = os.listdir(inputclass="lazy" data-src) for file in file_list: curr_file=path.join(inputclass="lazy" data-src,file) #递归实现 if(path.isdir(curr_file)): scanner_txt(curr_file,txt_list) else: curr_file_name=curr_file.split(".") curr_file_type=curr_file_name[len(curr_file_name)-1] if curr_file_type=="txt": txt_list.append(curr_file) return txt_list
读取文本中的内容,挑选数据中为”帧号,状态类型,状态持续时间“的数据
def readTxtDataProprocessing(filepath,kss7sd,kss8sd,kss9sd): resFrame=[] print(filepath) with open(filepath,encoding='utf-8') as f: for line in f: frame_info=line.split(',') if(len(frame_info)<3): continue framenum=frame_info[0] frametime=frame_info[2].split('\n')[0] resFrame.append([int(framenum),int(frametime)]) f.close() #文件内闭眼时长为空的不处理 if(len(resFrame)==0): return #去掉重复的值,归并成统一的值 totalSD=deduplicationData(resFrame) filename=filepath.split('\\')[-1] kssLevel=filename.split('-')[2] print("文件:{} 总体闭眼时长标准差为:{}".format(filename,totalSD)) print() if(kssLevel=='KSS7'): kss7sd.append(totalSD) elif(kssLevel=='KSS8'): kss8sd.append(totalSD) elif(kssLevel=='KSS9'): kss9sd.append(totalSD)
去除文本数据只出现的一次的数据,以及将出现2次和3次的数据进行合并
def deduplicationData(resFrame): uniqueRes = [] framelength = len(resFrame) i = 0 while (i < framelength): if (resFrame[i][0] == 17924): t = 1; count = 1 if (i + 1 < framelength): if (resFrame[i][1] == resFrame[i + 1][1]): count += 1 if (i + 1 >= framelength): break if (i + 2 < framelength): if (resFrame[i][1] == resFrame[i + 2][1]): count += 1 if (count != 1): uniqueRes.append([resFrame[i][0], resFrame[i][1]]) i += count #计算闭眼时长标准差 return closeEyeTimeSD(uniqueRes) # for i in range(len(uniqueRes)): # print("frameNum:", uniqueRes[i][0], "frameTime:", uniqueRes[i][1], "ms")
数组划分区间,按分钟进行划分
#data 经过去重和选帧后得到的列表def closeEyeTimeSD(data): #按每一分钟的时间间隔划分区间:1秒钟30帧,1分钟1800帧 #建立分割数组保存第n分钟内的睁闭眼数据,划分成12段 dividArr=[] for i in range(12): dividArr.append([]) for i in range(len(data)): index=int(data[i][0]/1800) dividArr[index].append(data[i][1]) #获取标准差 sdArr=[] for i in range(len(dividArr)): avergeTime,sdArray=countTotalSD(dividArr[i]) if(dividArr[i]!=[]): sdArr.append(sdArray) print("第{}分钟平均眨眼时长为:{},闭眼时长标准差为:{}".format(i+1,avergeTime,sdArray)) totalSD=countTotalSD(sdArr)[1] return totalSD
计算标准差函数
def countTotalSD(sdArray): if(len(sdArray)==0): return [0,0] sumArray = 0 for i in sdArray: sumArray += i # 计算全部的标准差 averageSD = sumArray / len(sdArray) sumSD = 0 for i in sdArray: sumSD += pow((i - averageSD), 2) totalSD = math.sqrt(sumSD / len(sdArray)) return [averageSD,totalSD]
到此,关于“Python闭眼时长标准差脚本怎么使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341