Python闭眼时长标准差脚本使用实例代码讲解
短信预约 -IT技能 免费直播动态提醒
闭眼时长标准差
平均闭眼时长:识别一分钟内闭眼次数以及每次闭眼的时长,将每次闭眼的时长进行累计相加,最终再取平均值
闭眼标准差公式
数据样本格式
文本内容
代码
遍历文件夹中所有的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闭眼时长标准差脚本使用实例代码讲解的文章就介绍到这了,更多相关Python闭眼时长标准差内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341