2016-12-11 1 views
0

가 미안 worng 장소에서 거울 부품을 붙여 프레임으로 미러 부분에서 null의 창을 캡처 할 수 없습니다 파이썬 OpenCV의 :

내 cap.read 것 같은데

을 (실행하는 동안, 나는) 코멘트로 그것을 할 수 있습니다 만든 무엇이든 읽지 마십시오

이것은 실제로 창을 캡처하고 웹 카메라를 작동시키기위한 opencv의 간단한 파이썬 코드입니다. 하지만 실행했을 때 창은 표시되지 않았지만 버그는 표시되지 않았습니다. 무엇이 잘못되었는지 쉽게 알 수 있습니까?

웹캠이 0인지 sth입니까? 왜 거울 부분이 작동하지 않습니까? 파이썬에서 opencv에 대한 좋은 예가 있습니까? 감사합니다!

import cv2 

def capture_camera(mirror=True, size=None): 
    cap = cv2.VideoCapture(0) 

    while True: 
     ret, frame = cap.read() 
     #if mirror is True: 
      #frame = frame[:,::-1] 
     if size is not None and len(size) == 200: 
      frame = cv2.resize(frame, size) 
      cv2.imshow('camera capture', frame) 
      k = cv2.waitKey(100) 
      if k == 27: 
       break 
    cap.release() 
    cv2.destroyAllWindows() 

capture_camera() 
+0

확인 'TRUE'또는 'FALSE'와 cap.isOpened'가 'TRUE'를 반환'여부. 대부분 OpenCV가 웹캠을 찾을 수 없습니다. –

+0

ret와 frame이 모두 null 인 것처럼 보이는 것이 맞다고 생각합니다. 미러 부분이 TypeError를 던지지 않을 것입니다 ... 어떻게 해결할 수 있습니까? 자세한 내용을 알려주시겠습니까? – Tianyi

답변

-1

이 코드를 사용해보십시오. 그것은 나를 위해 작동 :

import cv2 

cap = cv2.VideoCapture(0) 

while True: 
    ret, frame = cap.read() 
    cv2.imshow('Webcam (close with q)' ,frame) 

    if(cv2.waitKey(1) & 0xFF == ord('q')): 
     break 

cap.release() 
cv2.destroyAllWindows() 

BTW : 귀하의 코드에서 오류가 발생합니다 :

Traceback (most recent call last): 
File "C:/Python/Scripts/OpenCV/Scripts/so_test.py", line 21, in <module> 
capture_camera() 
File "C:/Python/Scripts/OpenCV/Scripts/so_test.py", line 7, in capture_camera 
frame = frame[:,::-1] 
UnboundLocalError: local variable 'frame' referenced before assignment 
+0

코드는 질문의 원래 코드와 정확히 똑같습니다. numpy를 가져올 필요가 없습니다. 왜냐하면 여기에서는 전혀 사용하지 않기 때문입니다. –

+0

예. 작동하지만 작동합니다. 질문에있는 코드는 분명히 .. – frankenapps

+0

코드가 잘못되었다는 것을 말하는 것은 아닙니다 (실제로는 아닙니다). 원래 코드에서 개선되지 않았기 때문에 질문에 대답하지 않습니다. 왜 작동하지 않는지 설명하려고합니다. –

1

당신의 코드가있는 경우 아래 executiong되지 않습니다 문

if size is not None and len(size) == 200: 

크기가 튜플와 렌 (때문에 크기)는 정의한 이후로 2를 반환합니다.

 size = (800,600) 

두 번째 실수 : 초기화되기 전에 프레임 배열을 변경하려고했습니다. [: :: - 1]

시도 먼저는 cap.read (에 의해 반환되는 프레임 배열)는 다음 예 다음 프레임 = 프레임에 의해 배열을 반대로하면 거울이 True 인 경우 확인하실 수 있습니다를 얻을 필요 이 코드 : ret`는`경우

import cv2 

def capture_camera(mirror=True, size=None): 
    cap = cv2.VideoCapture(0) 

    while True: 
     ret, frame = cap.read() 
     if mirror is True: 
      frame = frame[:,::-1] 

     size = (800,600) 
     if size is not None: 
      frame = cv2.resize(frame, size) 
      cv2.imshow('camera capture', frame) 
      k = cv2.waitKey(100) 
      if k == 27: 
       break 
    cap.release() 
    cv2.destroyAllWindows() 

capture_camera() 
+0

답변 해 주셔서 감사합니다. 잘못된 코드를 붙여 넣기위한 제 잘못이었습니다 .... 내 cap.read()가 null이고 왜 그런지 모르겠다. ... – Tianyi

+0

http://stackoverflow.com/q/34716709/4287377 여기 op ffmpeg 라이브러리를 다시 컴파일하여 해결했습니다. –