OpenCV 웹캠

Salman Mehmood 2024년2월15일
OpenCV 웹캠

이 짧은 데모에서는 웹캠에 액세스하고 Python 및 OpenCV를 사용하여 해당 라이브 피드를 표시하는 방법을 배웁니다.

Python 및 OpenCV의 도움으로 웹캠에 액세스

라이브 카메라 피드에 액세스해야 하는 컴퓨터 비전 프로젝트에서 작업할 때마다 안면 마스크 감지를 수행하거나 사회적 거리 감지를 수행하려는 프로젝트를 설계합니다.

이 경우 카메라의 라이브 피드에 액세스해야 하며 카메라에서 수신하는 라이브 피드가 무엇이든 다음 명령은 다른 목적으로 사용될 수 있습니다.

OpenCV를 사용하여 실시간 카메라 피드에 액세스하는 코드를 살펴보겠습니다. opencv 라이브러리를 가져오면 opencv 라이브러리에서 VideoCapture() 메서드를 사용해야 합니다.

그것은 다른 소스에서 비디오를 캡처합니다. 로컬 컴퓨터 시스템에서 비디오를 캡처하거나 랩톱 카메라에서 비디오를 캡처하거나 모든 IP 기반 카메라에서 비디오를 캡처할 수 있습니다.

괄호 안에 동영상 캡처 소스를 제공해야 합니다.

WC = cv2.VideoCapture(0)

이제 소스 0을 제공했음을 알 수 있습니다. 이는 랩톱의 기본 카메라에 액세스한다는 것을 의미합니다. 컴퓨터 시스템에 저장된 비디오에 액세스하려면 비디오의 전체 경로를 문자열로 전달할 수 있습니다.

IP 기반 카메라에 액세스하려면 IP 기반 카메라의 전체 경로를 제공해야 합니다. 우리는 더미 주소를 고려하고 다음과 같을 것입니다.

WC = cv2.VideoCapture("https://3.4.5.6/cam2")

그러나 이 기사에서는 랩톱의 기본 카메라에 액세스하려고 하며 이를 위해 소스를 0으로 지정해야 합니다. 카메라에서 라이브 피드를 캡처합니다.

비디오를 캡처한 후에는 개체에 저장한 다음 비디오 또는 카메라에서 수신하는 라이브 피드에서 각 프레임을 읽으려고 시도합니다.

비디오는 일련의 이미지에 불과하며 컴퓨터 비전 분야에서는 이를 프레임이라고 합니다.

이제 while 루프에 많은 코드를 작성할 것입니다. 그것은 카메라의 라이브 피드를 무한히 계속 읽을 것입니다. read() 메소드를 사용하여 WC 객체에서 프레임을 읽습니다. 이 프레임은 이미지일 뿐입니다.

while True:
    # this will read images/frames one by one
    RET, F = WC.read()
    cv2.imshow("Live Feeds", F)

다음 명령은 두 개의 인수가 있는 imshow() 메서드를 사용하여 이러한 이미지를 표시합니다. 하나는 오른쪽 상단 모서리에 나타날 창 이름이고 두 번째는 이미지의 내용인 numpy 배열입니다.

다음 명령에서는 라이브 카메라에서 피드를 수신하고 프로그램에서 프레임이나 이미지를 계속 표시합니다. 이 무한 루프나 카메라의 라이브 피드를 중지하려면 이 루프를 끊어야 합니다.

우리는 v2.waitKey(1)를 사용해야 합니다. 이것은 우리가 키보드에서 누르는 키가 while 루프에서 빠져나가야 한다고 언급할 때까지 창을 계속 열어 둘 것입니다.

정의된 키를 누르면 카메라에서 액세스하는 라이브 피드가 자동으로 중지됩니다.

코드 끝에서 WC 객체를 릴리스합니다. 라이브 피드를 표시하기 위해 연 모든 창을 파괴하는 destroyAllWindows() 메서드를 호출합니다.

import numpy as np
import cv2

# Capture video from storage/laptop camera/IP based camera
WC = cv2.VideoCapture(0)

while True:
    # this will read images/frames one by one
    RET, F = WC.read()
    cv2.imshow("Live Feeds", F)
    KEY = cv2.waitKey(1)  # wait for key press
    if KEY == ord("q"):
        break
WC.release()
cv2.destroyAllWindows()

이제 카메라가 실시간 비디오를 캡처하는 것을 볼 수 있습니다.

Python 및 OpenCV를 사용하여 웹캠에 액세스

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn