esp32 cam 영상 출력 소스는 아래를 참고하자.
최종 소스 - ESP32 CAM의 영상을 출력
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char* argv[])
{
string url = "http://192.168.0.104";
// Open the default camera
VideoCapture cap(url);
// Check if the camera is opened
if(!cap.isOpened())
{
cout << "Error opening camera" << endl;
return -1;
}
// Capture frames from the camera in a loop
while(true)
{
// Capture a frame
Mat frame;
cap >> frame;
// Check if the frame is empty
if(frame.empty())
{
cout << "Empty frame" << endl;
break;
}
// Display the frame
imshow("Frame", frame);
// Press 'q' to exit the loop
if(waitKey(1) == 'q')
{
break;
}
}
// Release the camera
cap.release();
return 0;
}
결과

소스 리뷰
VideoCapture cap(url);
opencv라이브러리를 사용하여 URL에서 비디오를 연다.
if(!cap.isOpened())
{
cout << "Error opening camera" << endl;
return -1;
}
isOpened() 매서드를 호출하여 비디오가 성공적으로 열려있는지 확인한다.
while(true)
{
// Capture a frame
Mat frame;
cap >> frame;
// Check if the frame is empty
if(frame.empty())
{
cout << "Empty frame" << endl;
break;
}
// Display the frame
imshow("Frame", frame);
// Press 'q' to exit the loop
if(waitKey(1) == 'q')
{
break;
}
}
Mat frame
Mat은 OpenCV 라이브러리의 데이터 유형으로 "Matrix"를 의미하며 이미지 데이터를 저장하는데 사용. 8비트 정수, 부동 소수점 숫자 등과 같은 다양한 형식으로 그레이스케일또는 컬러 이미지와 같은 다양한 이미지 유형을 나타내는데 사용함
cap >> frame
비디오 프레임을 캡처 하여 frame 개체에 저장.
frame.empty()
frame 개체가 비어있는 개체 인지 확인함.
imshow("Frame", frame);
화면에 이미지를 표시 하는데 사용.
"Frame"은 이미지를 표시하기 위해 생성될 창의 이름.
waitKey()
키보드의 이벤트를 확인함. ()는 함수가 반환하기 전에 이벤트를 기다려야하는 시간을 의미하며 ms단위이다.
위의 소스에서는 1ms 동안 대기를 의미한다
에러메세지
OpenCV: Couldn't read video stream from file "http://192.168.0.104"
Error opening camera Program ended with exit code: 255
-> VideoCapture 개체가 지정된 URL에서 카메라 스트림을 읽을 수 없음을 나타내며, URL이 잘못되었거나 해당 URL에서 카메라에 액세스할 수 없거나 네트워크 연결에 문제가 있을 수 있다.
166 open VIDEOIO(CV_IMAGES): raised OpenCV exception:
->OpenCV 라이브러리와 관련이 있으며 카메라 스트림을 열려고 시도하는 동안 예외가 발생했음을 나타낸다.
오류 코드 "166"은 OpenCV에서 videoio 모듈이 카메라 스트림을 열 수 없음을 나타내기 위해 사용하는 특정 오류 코드.
이 오류 메시지 의 이유는 아래와 같다.
- 카메라가 연결되지 않았거나 제대로 작동하지 않음
- 카메라 드라이버가 설치되어 있지 않거나 사용 중인 OpenCV 버전과 호환되지 않음
- 다른 프로그램에서 카메라를 사용 중이므로 코드에서 액세스할 수 없음
- 카메라의 URL이 잘못되었거나 해당 URL에서 카메라에 액세스할 수 없음
'Open CV' 카테고리의 다른 글
opencv c++ 블러링필터 적용하기 - 평균화, 가우시안 필터 (0) | 2023.01.13 |
---|---|
opencv c++ gray scale, HSV scale 적용하기 (0) | 2023.01.13 |
xcode c++ cURL 사용법 (0) | 2023.01.13 |
맥OS Xcode OpenCV 설정[C++] (1) | 2023.01.06 |
윈도우 C++ VSCode OpenVC 환경설정 (0) | 2023.01.04 |