본문 바로가기
파이썬

파이썬 OpenCV 및 Python을 사용하여 웹캠 피드 표시

by º기록 2020. 12. 7.
반응형


창이 만들어지고 웹캠의 표시등이 켜졌 기 때문에 부분적으로 거기에 있다는 것을 알고 있지만 창에 아무것도 표시되지 않는 것 같습니다. 누군가 내가 뭘 잘못하고 있는지 설명 할 수 있기를 바랍니다.

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()

관련없는 메모에서 나는 웹캠이 cv.CaptureFromCAM 에서 가끔 색인 번호를 변경하는 것을 발견했으며, 카메라가 하나만 연결되어 있는데도 0, 1 또는 2를 입력해야하는 경우도 있습니다. 플러그를 뽑지 않았습니다 (인덱스를 변경하지 않으면 빛이 켜지지 않기 때문에 알고 있습니다). Python이 올바른 색인을 결정하도록하는 방법이 있습니까?

 

해결 방법

 

repeat () 메서드의 하단에 c = cv.WaitKey (10) 줄을 추가해보세요.

사용자가 키를 입력 할 때까지 10ms를 기다립니다. 키를 전혀 사용하지 않더라도 이것을 넣으십시오. 약간의 지연이 필요하다고 생각하므로 time.sleep (10) 도 작동 할 수 있습니다.

카메라 인덱스와 관련하여 다음과 같이 할 수 있습니다.

for i in range(3):
    capture = cv.CaptureFromCAM(i)
    if capture: break

이것은 적어도 0-2의 인덱스에 대해 첫 번째 "작동하는"캡처 장치의 인덱스를 찾습니다. 컴퓨터에 적절한 캡처 장치로 인식되는 여러 장치가있을 수 있습니다. 내가 아는 유일한 방법은 당신의 빛을 수동으로 보는 것입니다. 아마도 이미지를 얻고 그 속성을 확인합니까?

프로세스에 사용자 프롬프트를 추가하려면 반복 루프에서 카메라 전환에 키를 바인딩 할 수 있습니다.

import cv

cv.NamedWindow("w1", cv.CV_WINDOW_AUTOSIZE)
camera_index = 0
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(10)
    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 = 0
            capture = cv.CaptureFromCAM(camera_index)

while True:
    repeat()

면책 조항 : 나는 이것을 테스트하지 않았으므로 버그가 있거나 작동하지 않을 수 있지만 최소한 해결 방법에 대한 아이디어를 줄 수 있습니다.

 

참조 페이지 https://stackoverflow.com/questions/2601194

 

 

반응형

댓글