2012-06-13 11 views
8

मैं अपने वेब कैमरा अजगर और OpenCV का उपयोग करने से वीडियो स्ट्रीम प्राप्त करना चाहते हैं, उस कार्य के लिए मैं इस सरल क्रियान्वित कर चुके हैंWebcam स्ट्रीम और OpenCV अजगर

capture = cv.CaptureFromCAM(0) 

लिए: के रूप में अन्य पदों ने सुझाव दिया

[email protected]:~/Python$ python camera.py 
VIDIOC_QUERYMENU: Argumento inválido 
VIDIOC_QUERYMENU: Argumento inválido 
VIDIOC_QUERYMENU: Argumento inválido 

मैं निम्नलिखित लाइन बदल: निम्न त्रुटि प्राप्त

capture = cv.CaptureFromCAM(-1) 

लेकिन त्रुटि बनी रहती है।

+0

WaitKey OpenCV का एक महत्वपूर्ण हिस्सा है कि के लिए काम करता है: कि में, एक ही कोड के रूप में लिखा है। बहुत से लोगों को लगता है कि उन्हें एक कीस्ट्रोक की प्रतीक्षा करने की आवश्यकता नहीं है और इसे छोड़ दें, लेकिन जीयूआई इसके बिना नहीं चलेगा और आपकी खिड़की कभी दिखाई नहीं देगी। – Octopus

उत्तर

21

आपको अंत में waitkey फ़ंक्शन जोड़ने की आवश्यकता है।

कोड के नीचे मेरे लिए ठीक काम करता है।

import cv 
cv.NamedWindow("w1", cv.CV_WINDOW_AUTOSIZE) 
capture = cv.CaptureFromCAM(0) 

def repeat(): 
    frame = cv.QueryFrame(capture) 
    cv.ShowImage("w1", frame) 

while True: 
    repeat() 
    if cv.WaitKey(33)==27: 
     break 

cv.DestroyAllWindows() 

और अगर आप जानकारी नहीं है, वर्तमान OpenCV नया अजगर एपीआई cv2 उपयोग करता है और यह सुविधाओं के बहुत सारे है।

import cv2 
import numpy as np 
c = cv2.VideoCapture(0) 

while(1): 
    _,f = c.read() 
    cv2.imshow('e2',f) 
    if cv2.waitKey(5)==27: 
     break 
cv2.destroyAllWindows() 
+0

यह कोड मेरे लिए काम नहीं करता है। मैं अजगर 2.7 का उपयोग कर रहा हूँ। मुझे अभी भी अमान्य तर्क के साथ त्रुटि मिलती है। – elaRosca

+0

कौन सी लाइन आपको त्रुटि दिखाती है? –

+0

यह मेरे लिए काम करने के लिए प्रतीत नहीं होता है, शायद ओपनसीवी बदल गया है, शायद पाइथन। डीआईआर (सीवी) दिखाता है कि विधि का नाम हैविंडो() नामांकित विन्डो(), और वीडियो कैप्चर कहीं भी एक विधि प्रतीत नहीं होता है। – Mittenchops

1

नीचे कोड अजगर 2.7 और opencv अजगर के लिए निर्माण 2,7

import numpy as np 
import cv2 

cap = cv2.VideoCapture(0) 

if not(cap.isOpened()): 
    cap.open() 

while(cap.isOpened()): 
    ret, frame = cap.read() 
    cv2.imshow('frame',frame) 
    if cv2.waitKey(1) & 0xFF == ord('q'): 
     break 

cap.release() 
cv2.destroyAllWindows()