카메라 입력 노드
CameraInput은 libcamera와 GStreamer의 libcamerasrc를 통해 노출된 MIPI 카메라에 대한 소스 노드입니다. 프레임이 run.push(...) 대신 DevKit 카메라 스택에서 가져와야 할 때 소스에서 소유한 그래프의 시작 부분에 사용합니다.
작업 가이드는 MIPI 카메라를 사용하세요.를 참조하십시오.
필수 조건
CameraInput을 사용하기 전에, Neat 외부에서 카메라를 실행하세요.
- Modalix DevKit의 전원이 꺼진 상태에서 카메라를 연결하십시오.
- 캐리어 보드, 카메라 제조업체, 센서 및 포트에 맞는
.dtbo오버레이를 선택합니다. - libcamera가 카메라 목록을 제대로 표시하는지 확인합니다.
- 요청하려는 정확한
format,width,height,framerate로libcamerasrc가 스트리밍할 수 있는지 확인하십시오.
camera_name은 libcamera 카메라 이름입니다. 기본 카메라를 사용하려면 이 값을 설정하지 않고, 보드가 둘 이상의 카메라를 지원하는 경우 cam -l에서 카메라 이름을 복사하여 설정하십시오.
빠른 시작
#include <neat.h>
namespace neat = simaai::neat;
neat::CameraInputOptions opt;
opt.width = 1920;
opt.height = 1080;
opt.framerate_num = 30;
opt.framerate_den = 1;
opt.format = "NV12";
opt.buffer_name = "camera0";
opt.allow_cpu_fallback = true;
neat::Graph graph;
graph.add(neat::nodes::CameraInput(opt));
graph.add(neat::nodes::Output("frames"));
neat::Run run = graph.build();
std::optional<neat::Sample> frame = run.pull(/*timeout_ms=*/5000);
CameraInput이 소스 데이터를 소유하므로, 애플리케이션에 다른 앱에서 제공하는 입력이 실제로 필요한 경우가 아니라면 공개 Input 노드를 생성하지 않고 그래프를 구축하십시오.
API 인터페이스
namespace simaai::neat {
struct CameraInputOptions;
class CameraInput;
}
namespace simaai::neat::nodes {
std::shared_ptr<simaai::neat::Node> CameraInput(
simaai::neat::CameraInputOptions opt = {});
std::shared_ptr<simaai::neat::Node> CameraInputWithCaptureBuffers(
simaai::neat::CameraInputOptions opt,
std::uint32_t capture_buffer_count);
}
파이썬:
opt = pyneat.CameraInputOptions()
node = pyneat.nodes.camera_input(opt, capture_buffer_count=32)
옵션
| 필드 | 기본값 | 설명 |
|---|---|---|
camera_name | 설정 해제 | 선택 사항: libcamera 카메라 이름입니다. 일반적으로 cam -l에서 복사합니다. 설정 해두면 libcamera가 기본 카메라를 선택합니다. |
width | 1920 | 픽셀 단위로 요청하는 프레임 너비입니다. 카메라 모드 및 오버레이에서 지원해야 합니다. |
height | 1080 | 픽셀 단위로 요청된 프레임 높이입니다. |
framerate_num | 30 | 프레임 속도 분자. |
framerate_den | 1 | 프레임 속도 분모입니다. 0은 1로 정규화됩 니다. |
format | "NV12" | 형식의 video/x-raw가 요청되었습니다. NV12는 권장되는 모델 전처리 경로입니다. |
| <<번역>> | ||
buffer_name | "camera" | 후속 메타데이터 및 모델 경로 이름 지정에 사용되는 논리적 버퍼 이름입니다. |
insert_queue | true | 할당자 협상 및 제로 복사 검증 후에 작은 실시간 소스 큐를 삽입합니다. |
leaky_queue | true | 큐를 하류에서 누수되도록 만들어 실시간 그래프가 오래된 백로그보다 최신 프레임을 선호하도록 합니다. |
queue_depth | 2 | insert_queue가 참일 때, 대기열에 쌓을 수 있는 최대 버퍼 수입니다. |
allow_cpu_fallback | false | false인 경우 카메라/장치의 제로 복사 지원을 필수로 설정합니다. true로 설정하는 것은 SiMaAI 메모리에 대한 Neat의 비공개 적응형 브리지를 사용하도록 선택하는 것입니다. |
capture_buffer_count는 CameraInputOptions 필드가 아닌, CameraInputWithCaptureBuffers에 전달되는 인자입니다. 기본값은 0이며, 이는 카메라 파이프라인 자체의 기본값을 유지합니다. 카메라 파이프라인은 자체 제한을 검증하며, Neat의 공급자는 최대 128까지 지원합니다.