Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมเพื่อแยกเฟรมโดยใช้ OpenCV ใน Python?


OpenCV (โอเพ่นซอร์สคอมพิวเตอร์วิทัศน์) เป็นไลบรารีการเขียนโปรแกรมโอเพ่นซอร์สที่พัฒนาขึ้นโดยทั่วไปสำหรับการเรียนรู้ของเครื่องและการมองเห็นด้วยคอมพิวเตอร์ มีโครงสร้างพื้นฐานทั่วไปในการทำงานกับแอปพลิเคชันวิชันซิสเต็มและเร่งการใช้แมชชีนเลิร์นนิงในผลิตภัณฑ์เชิงพาณิชย์

ด้วยอัลกอริธึมที่ปรับให้เหมาะสมมากกว่า 2.5 พันรายการสำหรับทั้งการมองเห็นด้วยคอมพิวเตอร์และการเรียนรู้ของเครื่อง จึงเป็นทั้งอัลกอริธึมแบบคลาสสิกและล้ำสมัย ด้วยอัลกอริธึมมากมาย ทำให้ใช้ไลบรารี่เพื่อวัตถุประสงค์หลายประการ เช่น การตรวจจับใบหน้าและการจัดโครงสร้างใหม่ ระบุวัตถุ จำแนกการกระทำของมนุษย์ในวิดีโอ ติดตามการเคลื่อนไหวของกล้อง รวมภาพเข้าด้วยกันเพื่อสร้างภาพความละเอียดสูงของทั้งฉาก และอีกมากมาย

ในแบบฝึกหัดนี้ เราจะใช้การประมวลผลวิดีโอแบบเฟรมต่อเฟรม วิดีโออินพุตอาจเป็นวิดีโอกล้องถ่ายทอดสดหรือวิดีโอที่จัดเก็บไว้ในเครื่องของคุณ เรากำลังจะสร้างเฟรมจากวิดีโอที่จัดเก็บไว้ในเครื่องของเรา แล้วเก็บเฟรมไว้ในไดรฟ์ในเครื่องของเรา

เนื่องจาก opencv ไม่ใช่ไลบรารี python มาตรฐาน เราจึงต้องติดตั้ง เราสามารถติดตั้งโดยใช้ pip ได้ง่ายมาก:

pip install opencv-python
Collecting opencv-python
Downloading https://files.pythonhosted.org/packages/49/4b/ad55a2e2c309fb698e1283e687129e0892c7864de9a4424c4ff01ba0a3bb/opencv_python-4.0.0.21-cp36-cp36m-win32.whl (22.1MB)
100% |████████████████████████████████| 22.1MB 141kB/s
Requirement already satisfied: numpy>=1.11.3 in c:\python\python361\lib\site-packages (from opencv-python) (1.13.0)
Installing collected packages: opencv-python
Successfully installed opencv-python-4.0.0.21

ไฟล์วิดีโอของฉันถูกจัดเก็บไว้ในไดรฟ์ f:ซึ่งฉันต้องการแปลงเป็นเฟรม (ภาพขนาดย่อ) จากนั้นจัดเก็บเฟรมในตำแหน่งที่ฉันเลือก

โปรแกรมเพื่อแยกเฟรมโดยใช้ OpenCV ใน Python?

รหัส :โปรแกรมสำหรับอ่านไฟล์วิดีโอและแยกเฟรมออกจากไฟล์

#Import libraries
import cv2
import os
#Function to extract frames
def extractFrames(pathIn, pathOut):
   #directory path, where my video images will be stored
   os.mkdir(r'c:/users/rajesh/Desktop/data')
   #Capture vidoe from video file
   cap = cv2.VideoCapture(pathIn)
#Counter Variable
count = 0

while (cap.isOpened()):
   # Capture frame-by-frame
   ret, frame = cap.read()
   if ret == True:
      print('Read %d frame: ' % count, ret)
      # save frame as JPEG file
      cv2.imwrite(os.path.join(pathOut, "frame{:d}.jpg".format(count)), frame)
      count += 1
   else:
      break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
def main():
   extractFrames(r'f:/I Miss You.mp4' , 'data')
if __name__=="__main__":
   main()

ผลลัพธ์

เราจะเห็นได้ว่าโฟลเดอร์ข้อมูลถูกสร้างขึ้นในเดสก์ท็อปของฉัน (เส้นทางปลายทาง) และเฟรมจากวิดีโอจะถูกเก็บไว้ในโฟลเดอร์

โปรแกรมเพื่อแยกเฟรมโดยใช้ OpenCV ใน Python?