OpenCV (Open Source Computer Vision) เป็นไลบรารีโอเพนซอร์สที่พัฒนาสำหรับ machine learning และ computer vision ให้โครงสร้างพื้นฐานทั่วไปสำหรับแอปพลิเคชัน computer vision และเร่งการใช้ machine learning ในผลิตภัณฑ์เชิงพาณิชย์
มีอัลกอริทึมที่เพิ่มประสิทธิภาพมากกว่า 2,500 ตัวสำหรับ computer vision และ machine learning ทั้งแบบคลาสสิกและ state-of-the-art ใช้ได้หลายวัตถุประสงค์ รวมถึง การตรวจจับและจดจำใบหน้า, ระบุวัตถุ, จำแนกการกระทำของมนุษย์ในวิดีโอ, ติดตามการเคลื่อนไหวของกล้อง, รวมภาพเพื่อสร้างภาพความละเอียดสูงของฉากทั้งหมด และอื่นๆ
ในแบบฝึกหัดนี้จะนำไปใช้งานการประมวลผลวิดีโอเฟรมต่อเฟรม วิดีโออินพุตสามารถเป็นวิดีโอจากกล้องสดหรือวิดีโอที่จัดเก็บในเครื่องท้องถิ่น จะสร้างเฟรมจากวิดีโอที่จัดเก็บในเครื่องแล้วจัดเก็บเฟรมไว้ในดิสก์ท้องถิ่น
เนื่องจาก 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: ซึ่งต้องการแปลงเป็นเฟรม (thumbnail) แล้วจัดเก็บเฟรมในตำแหน่งที่เลือก

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