Trích xuất khung cụ thể từ video Python
Xin chào, có đồng học. Hôm nay chúng ta sẽ học cách trích xuất hình ảnh từ video bằng mô-đun Python OpenCV. Vì vậy, hãy bắt đầu Show Mục tiêu của hướng dẫnChúng tôi mong muốn trích xuất từng khung hình từ một tệp video với sự trợ giúp của mô-đun OpenCV của ngôn ngữ lập trình Python Trích xuất hình ảnh từ video bằng Python OpenCVBây giờ chúng ta đã biết chính xác chúng ta sẽ làm gì. Hãy để chúng tôi bắt đầu thực hiện mã 1. Nhập mô-đunBước đầu tiên giống như bất kỳ dự án nào khác là nhập các mô-đun. Chúng tôi sẽ chỉ cần mô-đun Đảm bảo rằng bạn đã cài đặt mô-đun trong hệ thống của mình. Và nếu bạn không biết OpenCV là gì, hãy xem hướng dẫn này. Hướng dẫn sẽ giúp bạn làm quen với các khái niệm cơ bản về OpenCV 2. Chụp videoĐể quay video, chúng tôi sẽ sử dụng chức năng while(True): ret,frame = cam.read() if ret: name = 'Video to Images\Frame(' + str(currentframe) + ').jpg' cv2.imwrite(name, frame) currentframe += 1 else: break0 của mô-đun opencv và lưu trữ video đã ghi vào một biến Đảm bảo video nằm cùng thư mục với tệp mã hoặc bạn cần nhập chính xác đường dẫn của tệp video đề nghị đọc. Làm cách nào để chỉnh sửa video bằng mô-đun moviepy? Trong trường hợp bạn không mang theo video, bạn có thể thu thập dữ liệu trực tiếp từ webcam của mình sau khi chuyển giá trị while(True): ret,frame = cam.read() if ret: name = 'Video to Images\Frame(' + str(currentframe) + ').jpg' cv2.imwrite(name, frame) currentframe += 1 else: break1 bên trong hàm import cv2 cam = cv2.VideoCapture("video.mp4") currentframe = 0 3. Trích xuất từng khung hình và lưu hình ảnh khung hìnhChúng ta hãy xem mã và sau đó hiểu nó từng dòng một while(True): ret,frame = cam.read() if ret: name = 'Video to Images\Frame(' + str(currentframe) + ').jpg' cv2.imwrite(name, frame) currentframe += 1 else: break Dòng 1. Tạo vòng lặp tiếp tục hoạt động cho đến khi không còn khung hình nào trong video Dòng 2. Với sự trợ giúp của hàm while(True): ret,frame = cam.read() if ret: name = 'Video to Images\Frame(' + str(currentframe) + ').jpg' cv2.imwrite(name, frame) currentframe += 1 else: break2, chúng tôi nhận được hai điều. liên kết và khung. ______13 – trả về True hoặc False cho biết liệu chúng tôi có nhận được khung hay không. ______14 – trả lại toàn bộ khung hình tại một thời điểm cụ thể. Dòng 3-6. Điều kiện while(True): ret,frame = cam.read() if ret: name = 'Video to Images\Frame(' + str(currentframe) + ').jpg' cv2.imwrite(name, frame) currentframe += 1 else: break0 kiểm tra xem khung có sẵn hay không sử dụng giá trị while(True): ret,frame = cam.read() if ret: name = 'Video to Images\Frame(' + str(currentframe) + ').jpg' cv2.imwrite(name, frame) currentframe += 1 else: break3. Sau đó, chúng tôi đặt định dạng đường dẫn và tên của khung hiện tại Biến khung hình hiện tại giữ số lượng khung hình. Sau đó, chúng ta sẽ sử dụng hàm while(True): ret,frame = cam.read() if ret: name = 'Video to Images\Frame(' + str(currentframe) + ').jpg' cv2.imwrite(name, frame) currentframe += 1 else: break2 để ghi khung tại đường dẫn đã đề cập trước đó Dòng 7-8. Điều kiện while(True): ret,frame = cam.read() if ret: name = 'Video to Images\Frame(' + str(currentframe) + ').jpg' cv2.imwrite(name, frame) currentframe += 1 else: break3 được xem xét khi không có khung nào để ngắt vòng lặp 4. Phát hành và phá hủy tất cả WindowsBước cuối cùng và cuối cùng là giải phóng tất cả các đối tượng videocaptures đã được tạo trước đó bằng hàm while(True): ret,frame = cam.read() if ret: name = 'Video to Images\Frame(' + str(currentframe) + ').jpg' cv2.imwrite(name, frame) currentframe += 1 else: break4 Tiếp theo, chúng tôi sử dụng chức năng while(True): ret,frame = cam.read() if ret: name = 'Video to Images\Frame(' + str(currentframe) + ').jpg' cv2.imwrite(name, frame) currentframe += 1 else: break5 để hủy mọi cửa sổ đã tạo và thoát khỏi toàn bộ mã cam.release() cv2.destroyAllWindows() Mã cuối cùng và đầu raMã hoàn chỉnh và ảnh chụp màn hình của các khung đã tạo được hiển thị bên dưới ________số 8 Phần kết luậnXin chúc mừng. Bạn biết có thể trích xuất hình ảnh từ video. Hy vọng bạn thích nó. Hãy theo dõi để tìm hiểu thêm Chúng tôi biết rằng các ứng dụng thị giác máy tính đang gia tăng nhanh chóng trong các vấn đề thực tế. e, giám sát giao thông bằng camera quan sát, nhận dạng người vì mục đích an ninh, phát hiện và phân loại dịch bệnh, v.v.
chúng tôi sẽ làm việc trên Google-Colab, nhưng người dùng Jupyter Notebook có thể thực hiện các bước tương tự vì trong Google-Colab, chúng tôi sẽ sử dụng video được lưu trữ trong google drive, vì vậy, ở đây trước tiên chúng tôi sẽ cần gắn google drive trong khi ở trong Jupyter notebook, bạn sẽ . Tất cả các bước khác sẽ giống nhau đối với việc triển khai sổ ghi chép và triển khai Colab
Bước 1. chúng tôi sẽ bắt đầu với việc nhập các thư viện sẽ giúp chúng tôi đạt được giải pháp cho vấn đề của mình. Người dùng Jupyter Notebook chỉ cần nhập thư viện OpenCV Bước 2. Bây giờ chúng tôi cần gắn ổ đĩa google để truy cập video từ đó chúng tôi sẽ trích xuất khung hình Bước 3. Bây giờ chúng tôi sẽ đặt đường dẫn cho video của chúng tôi từ đó chúng tôi sẽ trích xuất các khung hình. Video tôi đã sử dụng có thể được tìm thấy ở đây. Đối với thời gian thực, bạn có thể bỏ qua bước này Bước 4. Bây giờ chúng tôi sẽ quay video (từ đường dẫn trên) với sự trợ giúp của mô-đun quay video OpenCV. Đối với thời gian thực, bạn sẽ cần thay thế đường dẫn video bằng 0 (Không) Bước 5. Chúng tôi sẽ sử dụng vòng lặp while để trích xuất khung. Ngoài ra, chức năng đọc sẽ được sử dụng cho mỗi lần trích xuất khung hình từ video đã quay và chức năng đọc này sẽ trả về hai điều,
Bước 6. Bây giờ chúng tôi sẽ lưu trữ các khung đã trích xuất trong một thư mục, để thực hiện việc này, bạn sẽ cần tạo một thư mục bên trong google drive trong khi người dùng máy tính xách tay có thể tạo một thư mục ở bất kỳ vị trí nào nhưng hãy nhớ rằng đường dẫn lưu trữ các khung cần phải chính xác Bước 7. Bây giờ chúng tôi sẽ cần lưu các khung đã trích xuất, để thực hiện việc này, chúng tôi sẽ sử dụng điều kiện if-else theo một cách cụ thể
Bước 8. Nếu đoạn mã trên chạy thành công, thì bạn sẽ có thể thấy các khung được trích xuất ở đầu ra như bên dưới
Về tôi tôi có hơn 1. 5 năm kinh nghiệm làm việc trong lĩnh vực Phát triển phần mềm. Hiện tại, tôi làm Kỹ sư phần mềm cải thiện các sản phẩm và dịch vụ cho khách hàng của chúng tôi bằng cách sử dụng phân tích bán lẻ, xây dựng các công cụ phân tích dữ liệu lớn, tạo và duy trì các mô hình cũng như giới thiệu các bộ dữ liệu mới hấp dẫn Trước đây, tôi là Thực tập sinh thị giác máy tính tại The Spark Foundation, nơi tôi đã có kinh nghiệm phân tích dữ liệu thị giác từ các nền tảng nguồn mở khác nhau bao gồm Kaggle, Google Images, Open Images, v.v. và đào tạo các mô hình học sâu khác nhau trên dữ liệu đó |