#_*_ coding:utf-8 _*_
importdatetimeimporttimeimportosimportos.pathimportcv2importnumpy as npimportos,shutil,zipfile,glob#视频唯一索引组织方式:date('ymd').'-'$couse_id.'-'.$num.'-'.$total_num.'-'.$user_id
globalgfilename,guser_id,gcourse_id,gnum,gtotal_num
videopath= './video/';#扫描目录
defshowdata():
dir=videopathifos.path.exists(dir):
dirs=os.listdir(dir)#dirs.sort(compare)
#dirs.reverse()
dirs.sort()if notdirs:
nowTime=datetime.datetime.now().strftime('Not Find Video...%Y-%m-%d %H:%M:%S')print(nowTime)return "",0for dirc indirs:
size=os.path.getsize(os.path.join(dir, dirc))#print(dirc)
#print(size)
returndirc,size#----------创建目录---------------#利用该用户的id,创建一个以id命名的该用户的目录
defmkdir(path):#去除首位空格
path=path.strip()#去除尾部 \ 符号
path=path.rstrip("\\")#判断路径是否存在
isExists=os.path.exists(path)if notisExists:
os.makedirs(path)print (path+'创建成功')returnTrueelse:print (path+'目录已存在')returnFalse#-----------移动到video文件夹------------
deftooutfile():globalgfilename,guser_id,gcourse_id,gnum,gtotal_num#读取用户id,课程名
count=0
gcourse_id=''guser_id=''gnum=''gtotal_num=''
for i ingfilename:if(i=='-'):
count= count+1
if(count==1 and i!='-'):
gcourse_id=gcourse_id+iif(count==2 and i!='-'):
gnum=gnum+iif(count==3 and i!='-'):
gtotal_num=gtotal_num+iif(count==4 and i!='-' and i!='.'):
guser_id=guser_id+iif(i=='.'):break
#print(guser_id)
#print(gcourse_id)
#print(gnum)
#print(gtotal_num)
#在outfile文件夹创建目录
mkpath='./outfile/'+guser_id
mkdir(mkpath)#将视频移动到./outfile/userid/ 下
srcfile='./video/'+gfilename
dstfile=mkpath
shutil.move(srcfile,dstfile)#合并视频的部分
combinepath = './outfile/10/'
defCreateFile(videoWriter,filename):
cap= cv2.VideoCapture('./outfile/10/'+filename)if (cap.isOpened() ==False):print("Unable to read camera feed1")#fps = cap.get(cv2.CAP_PROP_FPS)
#size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)),
#int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
success, frame =cap.read()whilesuccess :
videoWriter.write(frame)
success, frame=cap.read()defCreateFile_old(filename):#Create a VideoCapture object
#cap = cv2.VideoCapture('../video/test.avi')
cap = cv2.VideoCapture('../video/'+filename)#Check if camera opened successfully
if (cap.isOpened() ==False):print("Unable to read camera feed")
frame_width= int(cap.get(3))
frame_height= int(cap.get(4))
out= cv2.VideoWriter('../outpy/out.avi',cv2.VideoWriter_fourcc('F', 'L', 'V', '1'), 14, (frame_width,frame_height))#out = cv2.VideoWriter('../outpy/'+filename,cv2.VideoWriter_fourcc('F', 'L', 'V', '1'), 14, (frame_width,frame_height))
while(True):
ret, frame=cap.read()if ret ==True:
out.write(frame)if cv2.waitKey(1) & 0xFF == ord('q'):break
else:breakcap.release()#out.release()
cv2.destroyAllWindows()defErgodCatalog():
dir=combinepathifos.path.exists(dir):
dirs=os.listdir(dir)#dirs.sort(compare)
#dirs.reverse()
dirs.sort()
videoWriter= cv2.VideoWriter('./outfile/10/out.avi', cv2.VideoWriter_fourcc('F', 'L', 'V', '1'), 30.0, (360, 640))if notdirs:
time.sleep(1)print("Sleep 1S")return0for dirc indirs:
size=os.path.getsize(os.path.join(dir, dirc))#CreateFile(dirc)
CreateFile(videoWriter,dirc)print("name:",dirc,",size:",size)return0#while(True):
#ErgodCatalog()
if __name__ == "__main__":#global gfilename,guser_id,gcourse_id,gnum,gtotal_num
#ErgodCatalog()
#while(True):
(gfilename, filesize) =showdata()if(gfilename!=''): #在文件夹中有视频存在时,才进行以下操作
print(gfilename)
tooutfile()#将video文件夹中的视频移动到outfile
if(gnum==gtotal_num): #在训练的组数达到总组数时,将视频合并
ErgodCatalog()#(gfilename, filesize) = showdata()
#print(gfilename)
#(guserid, gcourse_id) = tovideo()
#ErgodCatalog()