opencv 에서 웹캠을 열어서 frame을 read 해보면 해상도가 640*480 으로만 나오는 문제가 발생했다.
웹캠 스팩에는 full - hd 지원이라 이상하게 여겨서 자료를 찾아보니 다음과 같은 방법으로 해결할 수 있었다.
1. frame을 처음 한번 read 한다.
capture.Read(frame);
2. 처음 read 한 프래임에서 해상도값을 구해본다.
if (!frame.Empty())
{
capture.Read(frame);
cameraCount = cameraCount + 1;
textBox2.Text = textBox2.Text + "\n카메라(" + i + ") 발견됨 (" + capture.FrameWidth+ "*" + capture.FrameHeight + ")";
}
else
{
textBox2.Text = textBox2.Text + "\n카메라(" + i + ") 발견실패";
}
frame이 정상적으로 읽혀졌는지(empty 가 아닌지 ) 판단한 후,
해상도를 구해보자
1번 카메라는 720p 이고 2번 카메라는 full-hd 지원이라고 스팩에 적혀있었으나 640*480 해상도만 나오는 문제가 발견된다.
3. 프레임을 읽고 난 후, 해상도를 강제로 5000*5000으로 큰값을 지정해준다.
if (!frame.Empty())
{
capture.FrameWidth = 5000;
capture.FrameHeight = 5000;
capture.Read(frame);
cameraCount = cameraCount + 1;
textBox2.Text = textBox2.Text + "\n카메라(" + i + ") 발견됨 (" + capture.FrameWidth+ "*" + capture.FrameHeight + ")";
}
else
{
textBox2.Text = textBox2.Text + "\n카메라(" + i + ") 발견실패";
}
해상도를 강제로 엄청 높게 지정해준 뒤에, 카메라의 값을 다시 read 해주자.
이제 카메라가 지원하는 최대 해상도 값을 찾을 수 있다.
ps. 로지텍 full -hd 웹캠은 스팩오버로 3k 해상도를 max 로 출력하였다.
'openCV' 카테고리의 다른 글
openCV 4 를 닷넷(C#) 에서 사용하기 (0) | 2019.05.14 |
---|