Python怎么实现视频分解成图片及图片合成视频(python,开发技术)

时间:2024-04-29 19:39:26 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    一、python视频拆分+图片合成(源码一)

    Python怎么实现视频分解成图片及图片合成视频

    1.python视频拆分

    importcv2defvideo2frame(videos_path,frames_save_path,time_interval):''':paramvideos_path:视频的存放路径:paramframes_save_path:视频切分成帧之后图片的保存路径:paramtime_interval:保存间隔:return:'''vidcap=cv2.VideoCapture(videos_path)success,image=vidcap.read()count=0whilesuccess:success,image=vidcap.read()count+=1ifcount%time_interval==0:cv2.imencode('.jpg',image)[1].tofile(frames_save_path+"/frame%d.jpg"%count)#ifcount==20:#breakprint(count)if__name__=='__main__':videos_path=r'E:\py\python3.7\test\test98youhuashiping\shipingchaifen\1.mp4'frames_save_path=r'E:\py\python3.7\test\test98youhuashiping\shipingchaifen'time_interval=2#隔一帧保存一次video2frame(videos_path,frames_save_path,time_interval)

    2.python图片合成

    importcv2importosimportnumpyasnpfromPILimportImagedefframe2video(im_dir,video_dir,fps):im_list=os.listdir(im_dir)im_list.sort(key=lambdax:int(x.replace("frame","").split('.')[0]))#最好再看看图片顺序对不img=Image.open(os.path.join(im_dir,im_list[0]))img_size=img.size#获得图片分辨率,im_dir文件夹下的图片分辨率需要一致#fourcc=cv2.cv.CV_FOURCC('M','J','P','G')#opencv版本是2fourcc=cv2.VideoWriter_fourcc(*'XVID')#opencv版本是3videoWriter=cv2.VideoWriter(video_dir,fourcc,fps,img_size)#count=1foriinim_list:im_name=os.path.join(im_dir+i)frame=cv2.imdecode(np.fromfile(im_name,dtype=np.uint8),-1)videoWriter.write(frame)#count+=1#if(count==200):#print(im_name)#breakvideoWriter.release()print('finish')if__name__=='__main__':im_dir=r'E:\py\python3.7\test\test98youhuashiping\shipingchaifen\pho/'#帧存放路径video_dir=r'E:\py\python3.7\test\test98youhuashiping\shipingchaifen/test.mp4'#合成视频存放的路径fps=30#帧率,每秒钟帧数越多,所显示的动作就会越流畅frame2video(im_dir,video_dir,fps)

    提示:路径中不要出现中文和特殊字符,且书写要规范!!

    二、python视频拆分+图片合成(源码二)

    Python怎么实现视频分解成图片及图片合成视频

    importcv2importnumpyasnpimportosos.chdir(r'E:\py\python3.7\test\test98youhuashiping\chaifen')##读取视频,并逐帧分解成图片cap=cv2.VideoCapture('1.mp4')#打开一个视频isOpened=cap.isOpened()#判断是否打开print(isOpened)#获取视频的相关信息,视频的每一帧图片的宽度都是一致的fps=cap.get(cv2.CAP_PROP_FPS)#帧率,即每秒钟由多少张图片组成width=int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))#获取宽度height=int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))#获取高度print(fps,width,height)#输出相关信息i=0while(isOpened):#读取视频的前两秒的图像,共计2*int(fps)张ifi==int(fps)*2:breakelse:i=i+1(flag,frame)=cap.read()#读取每一张flagframefilename='image'+str(i)+'.jpg'#将读取的图片写入文件中,ifflag==True:cv2.imwrite(filename,frame,[cv2.IMWRITE_JPEG_QUALITY,100])#确定图片质量,100算是高的print('end!')##读取零散图片(上面分解的图片),并将其合成视频img=cv2.imread('image1.jpg')imginfo=img.shapesize=(imginfo[1],imginfo[0])#与默认不同,opencv使用height在前,width在后,所有需要自己重新排序print(size)#创建写入对象,包括新建视频名称,每秒钟多少帧图片(10张),size大小#一般人眼最低分辨率为19帧/秒videoWrite=cv2.VideoWriter('2.mp4',-1,10,size)foriinrange(1,40):filename='image'+str(i)+'.jpg'img=cv2.imread(filename,1)#1表示彩图,0表示灰度图#直接写入图片对应的数据videoWrite.write(img)videoWrite.release()#关闭写入对象print('end')

    三、python视频拆分(源码三)

    Python怎么实现视频分解成图片及图片合成视频

    importcv2#导入opencv模块importosimporttimedefvideo_split(video_path,save_path):'''对视频文件切割成帧''''''@paramvideo_path:视频路径@paramsave_path:保存切分后帧的路径'''vc=cv2.VideoCapture(video_path)#一帧一帧的分割需要几帧写几c=0ifvc.isOpened():rval,frame=vc.read()else:rval=Falsewhilerval:rval,frame=vc.read()#每秒提取2帧图片ifc%2==0:cv2.imwrite(save_path+"/"+str('%06d'%c)+'.jpg',frame)cv2.waitKey(1)c=c+1DATA_DIR=r"E:\py\python3.7\test\test98youhuashiping\ceshi\mp4"#视频数据主目录SAVE_DIR=r"E:\py\python3.7\test\test98youhuashiping\ceshi\pho2"#帧文件保存目录start_time=time.time()forparents,dirs,filenamesinos.walk(DATA_DIR):#ifparents==DATA_DIR:#continueprint("正在处理文件夹",parents)path=parents.replace("\\","//")f=parents.split("\\")[1]save_path=SAVE_DIR+"//"+f#对每视频数据进行遍历forfileinfilenames:file_name=file.split(".")[0]save_path_=save_path+"/"+file_nameifnotos.path.isdir(save_path_):os.makedirs(save_path_)video_path=path+"/"+filevideo_split(video_path,save_path_)end_time=time.time()print("Costtime",start_time-end_time)
     </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
    本文:Python怎么实现视频分解成图片及图片合成视频的详细内容,希望对您有所帮助,信息来源于网络。
    上一篇:Go语言time包数字与时间相乘的问题怎么解决下一篇:

    2 人围观 / 0 条评论 ↓快速评论↓

    (必须)

    (必须,保密)

    阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18