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.
Mã :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.