반응형
V4L2 C++ 로 카메라 정보 확인하기
하나의 임베디드 시스템에 여러대의 카메라가 연결될 경우, 각각의 카메라의 node 를 구별해야하는 경우가 있다. Video4Linux 에서 제공하는 utils 기능으로 Jetson 에 연결된 카메라의 정보를 읽는 C++ 예제를 실행해본다.
Jetson V4L2 util 명령으로 카메라 정보 얻기
테스트 환경
- Jetson Xavier NX + JetPack 4.6 (L4T R32.6.1)
커멘드라인 명령
터미널 커멘드 라인 명령을 사용하기 위해서는 apt 를 이용해서 v4l-utils 를 설치해야한다.
$ sudo apt-get install v4l-utils
터미널 커멘드 라인에서 v4l2-ctl 명령어로 연결된 카메라를 list-up 할 수 있다. 현재 NX 에는 AR0521 MIPI 카메라와 USB 카메라가 연결된 상태이다.
$ v4l2-ctl --list-devices
vi-output, ar0521 10-0042 (platform:15c10000.vi:2):
/dev/video0
oCam-5CRO-U-M (usb-3610000.xhci-3.1):
/dev/video1
C++ 에서 카메라 정보 읽어오기
다음의 github 코드를 사용한다.
https://github.com/doleron/v4l2-list-devices.git
이 코드를 build 하기 전에, 다음과 같이 string.h 를 추가한다.
~/v4l2-list-devices$ git diff
diff --git a/include/list_devices.hpp b/include/list_devices.hpp
index db3414e..5179bc3 100644
--- a/include/list_devices.hpp
+++ b/include/list_devices.hpp
@@ -35,6 +35,8 @@
#include <dirent.h> //to list dir's content
+#include <string.h>
+
namespace v4l2
{
namespace devices
위와 같이 string.h 를 추가하고, cmake 와 make 를 실행한다.
nvidia@nvidia-desktop:~/v4l2-list-devices$ cmake . && make
-- Configuring done
-- Generating done
-- Build files have been written to: /home/nvidia/v4l2-list-devices
[100%] Built target list-devices
build 된 list-devices 파일을 실행한다. 터미널에서 실행한 v4l2-ctl 명령어와 동일하게 결과가 나옴을 알 수 있다.
nvidia@nvidia-desktop:~/v4l2-list-devices$ ./list-devices
vi-output, ar0521 10-0042 at platform:15c10000.vi:2 is attached to
/dev/video0
oCam-5CRO-U-M at usb-3610000.xhci-3.1 is attached to
/dev/video1
아래 main 코드의 device_description 과 device_paths 를 이용하면, 하나의 임베디드 시스템에 연결된 각각의 카메라의 node 를 구별해야하는 경우에 유용하게 사용될 수 있다.
int main() {
std::vector<v4l2::devices::DEVICE_INFO> devices;
v4l2::devices::list(devices);
for (const auto & device : devices)
{
std::cout << device.device_description << " at " << device.bus_info << " is attached to\n";
for (const auto & path : device.device_paths) {
std::cout << path << "\n";
}
std::cout << "\n";
}
}
참고자료
반응형
'NVIDIA Jeston > Jetson BSP' 카테고리의 다른 글
Jetson Nano 이미지 백업과 재사용 (0) | 2022.07.22 |
---|---|
[Jetson] nvme ssd 를 루트파일시스템으로 사용하기 (0) | 2022.07.09 |
[Jetson] JTOP 시스템 프로파일러 도구 (0) | 2022.07.03 |
[Jetson] Xavier NX 방열팬 제어 (0) | 2022.06.30 |
[Jetson] QtCAM 카메라 어플리케이션 (0) | 2022.05.24 |
[Jetson] GPIO PWM 예제 (1) | 2022.05.02 |
[Jetson] AX720 Jetpack SDK 설치하기 (0) | 2022.02.25 |
[Jetson] python 실행 중 Illegal instruction 오류 (0) | 2022.02.19 |