2012-12-30 5 views
0

저는 Python opencv를 처음 사용합니다. 사람이 오류Python 프로그램에서 이미지를 캡처하는 중에 오류가 발생했습니다.

import cv 

cv.NamedWindow("w1", cv.CV_WINDOW_AUTOSIZE) 
camera_index = 1 
capture = cv.CaptureFromCAM(camera_index) 

def repeat(): 
global capture #declare as globals since we are assigning to them now global camera_index 
frame = cv.QueryFrame(capture) 
cv.ShowImage("w1", frame) 
c = cv.WaitKey(100) 
if(c=="n"): #in "n" key is pressed while the popup window is in focus 
    camera_index += 1 #try the next camera index 
    capture = cv.CaptureFromCAM(camera_index) 
    if not capture: #if the next camera index didn't work, reset to 0. 
     camera_index =1 
     capture = cv.CaptureFromCAM(camera_index) 

while True: 
repeat() 

이 내가 무엇입니까 어떤 오류가 밖으로 정렬하는 데 도움 주실 래요 - 그것은 cv.CaptureFromCAM() 또는 cv.QueryFrame() 중 하나가 실패 것으로 보인다

OpenCV Error: Null pointer (NULL array pointer is passed) in cvGetMat, file /home/paraste/OpenCV-2.3.1/modules/core/src/array.cpp, line 2382 
Traceback (most recent call last): 
    File "dualcamara.py", line 10, in <module> 
img = cv.GetMat(cv.QueryFrame(capture), 500) 
cv2.error: NULL array pointer is passed 

답변

1

(아마도 camera_index 잘못입니까?) 따라서 오류가 발생하는 frame에 NULL이 표시됩니다. 당신은 그 두 함수의 결과를 확인하고 성공해야합니다 (난 그냥이 경우에 메시지를 인쇄하고있어, 당신은 다른 과정의 무언가 수)해야합니다

capture = cv.CaptureFromCAM(camera_index) 
if not capture: 
    print "Failed to initialize capture" 

frame = cv.QueryFrame(capture) 
if not frame: 
    print "Failed to get frame" 
+0

안녕하세요. 회신 해 주셔서 감사합니다. CaptureFromCAM 함수는 16 진수 값을 반환하지만 QueryFrame 함수는 아무 것도 반환하지 않습니다. 카메라가 켜지지 않았다고 생각했는데, 나는 수동으로 치즈 명령을 사용하여 스위치를 켰지 만 리턴 값에는 변화가 없다. 내장 기능을 사용하여 카메라를 켜는 방법을 알려주십시오. 심지어 나는 함수를 사용하여 시도했다 cv2.VideoCapture.op 하지만 그것은 다음과 같은 오류로 끝납니다 : AttributeError : 'builtin_function_or_method'객체가 'open'속성이 없습니다. – parastenitk22f

0

cv.QueryFrame()가 반환 될 수 없음 당신은 가능성을 다루지 않는다. 내가 cv.QueryFrame() 가끔 처음에 None을 돌려 것을 발견, 그래서 간단히 말하자면 :

if frame == None: 
    return 

이 방법을 처음 호출이 실패하더라도, 또는 호출이 간헐적으로 실패, 계속 이미지를 공급 것이다 루프 그들은 ​​캡처로 . 내 맥 도서 프로 파이썬 2.7을 사용하여 동일한 문제가 있었는데이 나를 위해 그것을 해결했습니다.

관련 문제