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:ซึ่งฉันต้องการแปลงเป็นเฟรม (ภาพขนาดย่อ) จากนั้นจัดเก็บเฟรมในตำแหน่งที่ฉันเลือก
รหัส :โปรแกรมสำหรับอ่านไฟล์วิดีโอและแยกเฟรมออกจากไฟล์
#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()
ผลลัพธ์
เราจะเห็นได้ว่าโฟลเดอร์ข้อมูลถูกสร้างขึ้นในเดสก์ท็อปของฉัน (เส้นทางปลายทาง) และเฟรมจากวิดีโอจะถูกเก็บไว้ในโฟลเดอร์