จับภาพวิดีโอจากกล้องด้วย Python

Dr. Pathasu Doungmala
1 min readSep 23, 2020

--

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

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

import numpy as np
import cv2

cap = cv2.VideoCapture(0)

while(True):
# Capture frame-by-frame
ret, frame = cap.read()

# Our operations on the frame come here
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

# Display the resulting frame
cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

cap.read () ส่งคืนค่า (True / False) ถ้าอ่าน frame ถูกต้องจะเป็น True คุณจึงตรวจสอบตอนท้ายของวิดีโอได้โดยตรวจสอบค่าส่งคืนนี้

คุณสามารถตรวจสอบว่ามีการเริ่มต้นหรือไม่โดยวิธี cap.isOpened () ถ้าเป็น True ตกลง มิฉะนั้นให้เปิดโดยใช้ cap.open ()

คุณยังสามารถเข้าถึงคุณลักษณะบางอย่างของวิดีโอนี้โดยใช้วิธี cap.get (propId) โดยที่ propId เป็นตัวเลขตั้งแต่ 0 ถึง 18 ตัวเลขแต่ละตัวแสดงถึงคุณสมบัติของวิดีโอ

ตัวอย่างเช่นเราสามารถตรวจสอบความกว้างและความสูงของเฟรมโดย cap.get (3) และ cap.get (4) มันทำให้ฉันได้ 640x480 โดยปริยาย แต่ฉันต้องการแก้ไขเป็น 320x240 เพียงใช้ ret = cap.set (3,320) และ ret = cap.set (4,240)

การเล่นวิดีโอจากไฟล์
เหมือนกับการจับภาพจากกล้องเพียงแค่เปลี่ยนดัชนีกล้องด้วยชื่อไฟล์วิดีโอ นอกจากนี้ในขณะที่แสดงเฟรมให้ใช้เวลาที่เหมาะสมสำหรับ cv2.waitKey () หากน้อยเกินไปวิดีโอจะเร็วมากและหากสูงเกินไปวิดีโอจะช้า (นั่นคือวิธีที่คุณสามารถแสดงวิดีโอแบบสโลว์โมชั่น) 25 มิลลิวินาทีจะใช้ได้ในกรณีปกติ

import numpy as np
import cv2

cap = cv2.VideoCapture('vtest.avi')

while(cap.isOpened()):
ret, frame = cap.read()

gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break

cap.release()
cv2.destroyAllWindows()

Ref : https://docs.opencv.org/master/dd/d43/tutorial_py_video_display.html

https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_gui/py_video_display/py_video_display.html

หมายเหตุท้าย:
หากคุณชอบบทความนี้อย่าลืมคลิก❤ด้านล่างเพื่อแนะนำและถ้าคุณมีคำถามใด ๆ แสดงความคิดเห็นและฉันจะพยายามอย่างดีที่สุดที่จะตอบ คุณสามารถติดตามฉันบน facebook page (https://www.facebook.com/nextsoftwarehousethailand/) และสามารถส่งอีเมลถึงฉัน

ขอให้ทุกคนมีวันที่ดี :)

--

--

Dr. Pathasu Doungmala
Dr. Pathasu Doungmala

Written by Dr. Pathasu Doungmala

Founder of Next Software — I am working on image processing, pattern recognition and AI to help reduce working in an industry.