成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Python迅速?gòu)亩桃曨l中獲取視頻幀的辦法詳細(xì)說(shuō)明

89542767 / 840人閱讀

  本文給大家介紹一類(lèi)從視頻里獲取視頻幀的辦法,因?yàn)閱魏双@取視頻幀速率比較慢,因而接下來(lái)我們?cè)鰪?qiáng)了線程同步的辦法,感興趣的朋友能夠出手試一試


  Python迅速獲取視頻幀(線程同步)


  現(xiàn)在詳細(xì)介紹一下一類(lèi)從視頻里獲取視頻幀的辦法,因?yàn)閱魏双@取視頻幀速率比較慢,因而接下來(lái)我們?cè)鰪?qiáng)了線程同步的辦法。


  1、獲取視頻幀


  獲取視頻幀關(guān)鍵用了Opencv控制模塊。


  在其中:


  camera=cv2.Videocapture(),函數(shù)公式主要通過(guò)啟用筆記本電腦內(nèi)置攝像頭載入視頻幀;


  res,image=camera.read()函數(shù)公式通常是按幀載入短視頻,傳參“res”是布爾型,取得成功載入回到True,載入不成功回到False;


  最終用cv2.imwrite()函數(shù)公式存放載入過(guò)的視頻幀。


  視頻幀獲取方式可參考本文


  import cv2
  import os
  def video_to_frames(video_path,outPutDirName):
  times=0
  #提取視頻的頻率,每1幀提取一個(gè)
  frame_frequency=1
  #如果文件目錄不存在則創(chuàng)建目錄
  if not os.path.exists(outPutDirName):
  os.makedirs(outPutDirName)
  #讀取視頻幀
  camera=cv2.VideoCapture(video_path)
  while True:
  times=times+1
  res,image=camera.read()
  if not res:
  print('not res,not image')
  break
  #按照設(shè)置間隔存儲(chǔ)視頻幀
  if times%frame_frequency==0:
  cv2.imwrite(outPutDirName+''+str(times)+'.jpg',image)
  print('圖片提取結(jié)束')
  #釋放攝像頭設(shè)備
  camera.release()

  2、線程同步方式


  線程同步的應(yīng)用關(guān)鍵應(yīng)用了threading庫(kù)。


  在其中:


  threading.Thread()函數(shù)公式主要是用于啟用線程同步,在其中主要參數(shù)“target”是上邊需要用到的函數(shù)公式,主要參數(shù)“args”是上邊函數(shù)的輸入數(shù)據(jù)。


  在其中相關(guān)線程同步的詳細(xì)介紹一下,及其速率提高效果可參考本文


  import threading
  threading.Thread(target=video_to_frames,args=(video_path,outPutDirName)).start()


  留意


  1、extract_frame方方法的入?yún)⒎謩e是:鍵入視頻地址、導(dǎo)出視頻地址、短視頻fps、視頻尺寸寬、視頻尺寸高、短視頻必須抽走的起點(diǎn)幀、短視頻必須抽走的完畢幀。


  3、整體代碼


  import cv2
  import os
  import threading
  def video_to_frames(video_path,outPutDirName):
  times=0
  #提取視頻的頻率,每1幀提取一個(gè)
  frame_frequency=1
  #如果文件目錄不存在則創(chuàng)建目錄
  if not os.path.exists(outPutDirName):
  os.makedirs(outPutDirName)
  #讀取視頻幀
  camera=cv2.VideoCapture(video_path)
  while True:
  times=times+1
  res,image=camera.read()
  if not res:
  print('not res,not image')
  break
  if times%frame_frequency==0:
  cv2.imwrite(outPutDirName+''+str(times)+'.jpg',image)
  print('圖片提取結(jié)束')
  camera.release()
  if __name__=="__main__":
  input_dir=r'D:datasetscow_dataset'#輸入的video文件夾位置
  save_dir=r'E:relate_codedataset'#輸出圖片到當(dāng)前目錄video文件夾下
  count=0#視頻數(shù)
  for video_name in os.listdir(input_dir):
  video_path=os.path.join(input_dir,video_name)
  outPutDirName=os.path.join(save_dir,video_name[:-4])
  threading.Thread(target=video_to_frames,args=(video_path,outPutDirName)).start()
  count=count+1
  print("%s th video has been finished!"%count)


  補(bǔ)充


  還可以利用Python實(shí)現(xiàn)抽取剔除視頻幀工具


  代碼


  下面是使用opencv對(duì)視頻中間幾幀抽取的方法。


  主要的思路是在讀取frame的時(shí)候,順便把幀寫(xiě)下來(lái)。


  同時(shí)如果不是需要抽取剔除的幀,直接continue到下個(gè)循環(huán)。


  樣例代碼如下,主要按照MP4格式進(jìn)行處理。


  #!/user/bin/env python
  #coding=utf-8
  """
  project:csdn-pro
  author:劍客阿良_ALiang
  file:test.py
  ide:PyCharm
  time:2022-06-30 17:55:48
  """
  import cv2
  #視頻抽幀
  def extract_frame(video_path:str,result_path:str,fps,weight,height,start,end):
  fourcc=cv2.VideoWriter_fourcc(*'mp4v')
  videoWriter=cv2.VideoWriter(result_path,fourcc,fps,(weight,height))
  vc=cv2.VideoCapture(video_path)
  if vc.isOpened():
  ret,frame=vc.read()
  else:
  ret=False
  count=0#count the number of pictures
  while ret:
  ret,frame=vc.read()
  if start<=count<=end:
  count+=1
  continue
  else:
  videoWriter.write(frame)
  count+=1
  print(count)
  videoWriter.release()
  vc.release()
  if __name__=='__main__':
  extract_frame('C:UsersxxxDesktop123.mp4','C:UsersxxxDesktop114.mp4',25,640,368,119,125)


  綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家?guī)?lái)幫助。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/128691.html

相關(guān)文章

  • B站智能防擋彈幕的一種python實(shí)現(xiàn)

    摘要:將圖片的處理方法放到視頻中的每一幀,再加上彈幕飛過(guò)的效果,就完成了版的智能防擋彈幕。不知道站的實(shí)現(xiàn)方法是怎樣,是否有人工干預(yù),是否有預(yù)計(jì)算。 某天代碼寫(xiě)得老眼昏花,去B站上摸魚(yú),突然發(fā)現(xiàn)奇怪的現(xiàn)象: showImg(https://segmentfault.com/img/remote/1460000017911829?w=600&h=284); 喲呵,B站竟然做了 視頻前景提取 ,把...

    jzzlee 評(píng)論0 收藏0
  • opencv python 從攝像頭獲取視頻/從文件獲取視頻 /保存視頻

    摘要:這次開(kāi)始學(xué)習(xí)從攝像頭獲取視頻使用獲取視頻要獲取視頻,需要?jiǎng)?chuàng)建一個(gè)對(duì)象,參數(shù)可以是設(shè)備索引攝像頭索引或視頻文件的名稱(chēng)。 這次開(kāi)始學(xué)習(xí)Getting Started with Videos 1從攝像頭獲取視頻 使用cv2.VideoCapture()獲取視頻. cv2.VideoCapture(builtins.object) 要獲取視頻,需要?jiǎng)?chuàng)建一個(gè)VideoCapture對(duì)象,參數(shù)可以...

    netmou 評(píng)論0 收藏0
  • 斯坦福新深度學(xué)習(xí)系統(tǒng) NoScope:視頻對(duì)象檢測(cè)快1000倍

    摘要:通過(guò)利用一系列利用視頻局部性的優(yōu)化,顯著降低了在每個(gè)幀上的計(jì)算量,同時(shí)仍保持常規(guī)檢索的高精度。的差異檢測(cè)器目前是使用逐幀計(jì)算的邏輯回歸模型實(shí)現(xiàn)的。這些檢測(cè)器在上的運(yùn)行速度非??欤棵氤^(guò)萬(wàn)幀。也就是說(shuō),每秒處理的視頻幀數(shù)超過(guò)幀。 視頻數(shù)據(jù)正在爆炸性地增長(zhǎng)——僅英國(guó)就有超過(guò)400萬(wàn)個(gè)CCTV監(jiān)控?cái)z像頭,用戶(hù)每分鐘上傳到 YouTube 上的視頻超過(guò)300小時(shí)。深度學(xué)習(xí)的進(jìn)展已經(jīng)能夠自動(dòng)分析這些...

    xcold 評(píng)論0 收藏0
  • 10分鐘學(xué)會(huì)使用YOLO及Opencv實(shí)現(xiàn)目標(biāo)檢測(cè)(下)|附源碼

    摘要:摘要本文介紹使用和完成視頻流目標(biāo)檢測(cè),代碼解釋詳細(xì),附源碼,上手快。將應(yīng)用于視頻流對(duì)象檢測(cè)首先打開(kāi)文件并插入以下代碼同樣,首先從導(dǎo)入相關(guān)數(shù)據(jù)包和命令行參數(shù)開(kāi)始。 摘要:?本文介紹使用opencv和yolo完成視頻流目標(biāo)檢測(cè),代碼解釋詳細(xì),附源碼,上手快。 在上一節(jié)內(nèi)容中,介紹了如何將YOLO應(yīng)用于圖像目標(biāo)檢測(cè)中,那么在學(xué)會(huì)檢測(cè)單張圖像后,我們也可以利用YOLO算法實(shí)現(xiàn)視頻流中的目標(biāo)檢...

    songze 評(píng)論0 收藏0
  • 前端工程師做Face Detection

    摘要:身為一名前業(yè)務(wù)程序員和現(xiàn)前端程序員,這樣的功能還是陌生的領(lǐng)域。需求使用加攝像頭,通過(guò)人臉檢測(cè),完成自動(dòng)拍照功能。在的屏幕上,顯示攝像頭的實(shí)時(shí)畫(huà)面,要是畫(huà)面中檢測(cè)出人臉,則觸發(fā)拍照。這樣做的效果能夠獲得更高的,同時(shí)還能完成更遠(yuǎn)距離臉部的捕獲。 因?yàn)轫?xiàng)目原因,需要使用人臉檢測(cè)(face detection)功能。身為一名前JAVA業(yè)務(wù)程序員和現(xiàn)前端程序員,這樣的功能還是陌生的領(lǐng)域。那能不能...

    nodejh 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<