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

Mục tiêu của hướng dẫn

Chú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 OpenCV

Bâ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ô-đun

Bướ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 openCV cho chương trình

Đả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:
		break
0 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:
		break
1 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ình

Chú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:
		break
2, 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:
		break
0 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:
		break
3. 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:
		break
2 để 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:
		break
3 đượ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ả Windows

Bướ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:
		break
4

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:
		break
5 để 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 ra

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

Khung Theo Khung OpenCV

Phần kết luận

Xin 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 biết rằng đối với bất kỳ sự phát triển ứng dụng thị giác máy tính nào, chúng tôi sẽ cần một tập dữ liệu, trên đó chúng tôi đào tạo mô hình của mình. Đôi khi khách hàng sẽ đưa cho bạn dataset nhưng nhiều trường hợp khách hàng yêu cầu bạn thu thập hoặc tìm dataset vậy trong trường hợp đó bạn sẽ cần tìm dataset nhưng nếu tìm mãi không thấy data thì sao?

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

Hãy để chúng tôi bắt đầu thực hiện từng bước. Nếu bạn làm theo các bước dưới đây thì cuối cùng bạn sẽ có thể trích xuất khung hình từ video trực tiếp hoặc video được lưu trữ

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

Thư viện nhập khẩu

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

Đã gắn google drive

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

Đường dẫn video

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]

Đã quay video

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,

  • thành công, sẽ trả về giá trị boolean [True/False]. Trong đó giá trị True sẽ cho biết khung được trích xuất thành công. trong khi giá trị Sai sẽ cho biết khung không được trích xuất
  • hình ảnh, sẽ cung cấp khung được trích xuất nếu thành công sẽ đúng
  • Ghi chú. biến đếm sẽ được sử dụng để đếm tổng số khung được trích xuất

trong khi lặp lại

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

Đường dẫn khung

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ể

  • nếu khung sẽ được trích xuất thì thành công sẽ là đúng, vì vậy chúng tôi sẽ lưu trữ khung, trong khi nếu thành công sẽ là sai, vì vậy chúng tôi sẽ dừng mã bằng câu lệnh ngắt

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

Khung được trích xuất

Đó là tất cả về trích xuất khung hình từ video hoặc thời gian thực, bạn có thể thử trên video của riêng mình

Dự án Github. liên kết

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 đó

Chủ Đề