Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình trích xuất khung bằng OpenCV trong Python?

OpenCV (Open source computer vision) là một thư viện lập trình mã nguồn mở về cơ bản được phát triển cho máy học và thị giác máy tính. Nó cung cấp cơ sở hạ tầng chung để hoạt động trên các ứng dụng thị giác máy tính và để đẩy nhanh việc sử dụng máy học trong các sản phẩm thương mại.

Với hơn 2,5 nghìn thuật toán được tối ưu hóa cho cả thị giác máy tính và máy học đều là những thuật toán cổ điển và hiện đại. Với rất nhiều thuật toán, nó có thể sử dụng thư viện cho nhiều mục đích bao gồm phát hiện và tổ chức lại khuôn mặt, xác định đối tượng, phân loại hành động của con người trong video, theo dõi chuyển động của camera, nối các hình ảnh lại với nhau để tạo ra hình ảnh có độ phân giải cao của toàn bộ cảnh và hơn thế nữa.

Trong bài tập này, chúng ta sẽ thực hiện xử lý video từng khung hình. Video đầu vào có thể là video camera trực tiếp hoặc video được lưu trữ trong máy cục bộ của bạn. Chúng tôi sẽ tạo các khung hình từ video được lưu trữ trong máy cục bộ của chúng tôi và sau đó lưu trữ các khung hình trong ổ đĩa cục bộ của chúng tôi.

Vì opencv không phải là một thư viện python tiêu chuẩn, vì vậy chúng ta cần cài đặt nó. Chúng tôi có thể cài đặt nó bằng cách sử dụng pip rất dễ dàng:

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

Tệp video của tôi được lưu trữ trong ổ đĩa f:, ổ đĩa này tôi muốn chuyển đổi thành các khung hình (hình thu nhỏ) và sau đó lưu trữ các khung hình ở vị trí tôi đã chọn.

Chương trình trích xuất khung bằng OpenCV trong Python?

:Chương trình đọc tệp video và trích xuất các khung hình từ tệp đó.

#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()

Đầu ra

Chúng ta có thể thấy, một thư mục dữ liệu được tạo trong màn hình của tôi (đường dẫn đích) và các khung hình từ video được lưu trữ bên trong thư mục.

Chương trình trích xuất khung bằng OpenCV trong Python?