จับภาพวิดีโอจากกล้องด้วย Python
บ่อยครั้งที่เราต้องถ่ายสตรีมแบบสดด้วยกล้องถ่ายรูป ซึ่ง 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
หมายเหตุท้าย:
หากคุณชอบบทความนี้อย่าลืมคลิก❤ด้านล่างเพื่อแนะนำและถ้าคุณมีคำถามใด ๆ แสดงความคิดเห็นและฉันจะพยายามอย่างดีที่สุดที่จะตอบ คุณสามารถติดตามฉันบน facebook page (https://www.facebook.com/nextsoftwarehousethailand/) และสามารถส่งอีเมลถึงฉัน
ขอให้ทุกคนมีวันที่ดี :)