2009-03-03 42 views
49

Tôi muốn truy cập webcam của mình từ Python.Tôi làm cách nào để truy cập webcam của mình bằng Python?

Tôi đã thử sử dụng tiện ích mở rộng VideoCapture (tutorial) nhưng không hoạt động tốt cho tôi, tôi phải giải quyết một số vấn đề như hơi chậm với độ phân giải> 320x230 và đôi khi trả về None lý do rõ ràng.

Có cách nào tốt hơn để truy cập webcam của tôi từ Python không?

+0

Vui lòng làm rõ hệ điều hành nào bạn cần hỗ trợ. –

+0

Xem thêm: [Thư viện Python để chụp ảnh máy ảnh] (http://softwarerecs.stackexchange.com/q/18134/1834) –

+0

Và: [Tại sao ảnh webcam được chụp bằng Python quá tối?] (Http: // stackoverflow .com/q/28566972/562769) –

Trả lời

40

OpenCV có hỗ trợ nhận dữ liệu từ webcam và mặc định nó đi kèm với trình bao bọc Python, bạn cũng cần cài đặt numpy cho phần mở rộng Python OpenCV (gọi là cv2) để hoạt động.
Tại thời điểm viết (tháng 1 năm 2015) chưa có hỗ trợ Python 3, vì vậy bạn cần sử dụng Python 2.

More information on using OpenCV with Python.

Một ví dụ copy từ Displaying webcam feed using opencv and python:

import cv2 

cv2.namedWindow("preview") 
vc = cv2.VideoCapture(0) 

if vc.isOpened(): # try to get the first frame 
    rval, frame = vc.read() 
else: 
    rval = False 

while rval: 
    cv2.imshow("preview", frame) 
    rval, frame = vc.read() 
    key = cv2.waitKey(20) 
    if key == 27: # exit on ESC 
     break 
cv2.destroyWindow("preview") 
+0

Có hỗ trợ Python 3 nếu bạn cài đặt từ bánh xe. Tôi đã sử dụng hướng dẫn này thành công: https://www.solarianprogrammer.com/2016/09/17/install-opencv-3-with-python-3-on-windows/ –

-2

Người duy nhất tôi đã sử dụng là VideoCapture, mà bạn đã nêu bạn không thích (mặc dù tôi không có vấn đề với nó, những gì lỗi bạn đã gặp phải?)

tôi đã không thể tìm thấy bất kỳ lựa chọn thay thế nào trong quá khứ hoặc hiện tại, vì vậy bạn có thể bị kẹt hoặc sử dụng VideoCapture hoặc tìm một thư viện C đẹp và viết một trình bao bọc Python cho nó (có thể có nhiều công việc hơn là bạn sẵn sàng đưa vào nó).

+1

Ok, đã chỉnh sửa câu hỏi để xác định vấn đề tôi đã tìm thấy. – Rodrigo

1

gstreamer có thể xử lý đầu vào webcam. Nếu tôi nhớ tốt, có những ràng buộc python cho nó!

+1

'padsp streamer -q -c/dev/video0 -f rgb24 -F stereo -r 24 -s 1280x720 -t 00:10 -o test.avi' sẽ ghi lại 10 giây của webcam HD với 24 khung hình/giây và lưu thành * test.avi *. (Lưu ý rằng padsp chỉ được sử dụng để đảm bảo rằng âm thanh được chụp dưới các phiên bản Ubuntu mới hơn.) – Pithikos

9

này cần phải có được một bình luận cho @ John Montgomery, nhưng đại diện của tôi không cho phép tôi đưa ra nhận xét. câu trả lời của bạn là rất tốt, nhưng ít nhất trên Windows, nó thiếu dòng

vc.release() 

trước

cv2.destroyWindow("preview") 

Nếu không có nó, các nguồn tài nguyên máy ảnh bị khóa, và không thể bị bắt một lần nữa trước khi python giao diện điều khiển bị giết.

Các vấn đề liên quan