콘텐츠로 건너뛰기

NVIDIA GPUDirect for Video#

Basler는 NVIDIA GPUDirect for Video 기술을 지원합니다. Basler Framegrabber API를 통해 NVIDIA GPUDirect for Video 기술의 사용을 액세스하고 제어할 수 있습니다. NVIDIA GPUDirect for Video는 NVIDIA GPU(graphics processing unit)를 사용하는 시스템에 적합합니다.

이 기술을 사용하면 짧은 대기 시간으로 비디오 프레임을 NVIDIA GPU memory로 효율적으로 전송할 수 있습니다. 서브프레임 전송 시간으로 비디오를 GPU에 스트리밍할 수 있는 완전한 제어 권한을 제공합니다.

Windows OS를 사용하는 호스트 PC에서 Basler Framegrabber API를 통해 GPUDirect for Video 기술을 사용할 수 있습니다.

  • OpenGL(Open Graphics Library) 또는
  • CUDA(Compute Unified Device Architecture)는 NVIDIA의 병렬 프로그래밍 프레임워크입니다.

NVIDIA GPUDirect for Video는 NVIDIA GPU(graphics processing unit)를 사용하는 시스템에 적합합니다. 이 기술을 사용하면 짧은 대기 시간으로 비디오 프레임을 NVIDIA GPU memory로 효율적으로 전송할 수 있습니다. 서브프레임 전송 시간으로 비디오를 GPU에 스트리밍할 수 있는 완전한 제어 권한을 제공합니다.

자세한 내용은 제조사 사이트의 NVIDIA GPUDirect for Video technology 및 GPUDirect Technology Overview 섹션을 참조하십시오.

요구 사항#

Basler 프레임 그래버와 함께 GPUDirect for Video 기술을 사용하려면 시스템이 다음 요구 사항을 충족해야 합니다:

하드웨어#

지원되는 NVIDIA GPU 최신 목록은 여기에서 확인하십시오.

원하는 Basler 프레임 그래버.

소프트웨어#

  • Basler Framegrabber SDK: 버전 5.10.0 이상
  • 호스트 PC 운영 체제: Windows 10(64비트)
  • Parallel Computing Platform/API (참조: 설치):
    • CUDA(Compute Unified Device Architecture) 버전 11.6 또는
    • OpenGL(Open Graphics Library)
  • 권장 IDE: Visual Studio 15.x 이상

정보

GPUDirect for Video를 실행하려면 추가 DLL 및 헤더 파일이 필요할 수 있습니다. 자세한 내용은 Basler Technical Support에 문의하십시오.

GPUDirect for Video 기술 지원은 Windows 10 환경에서 테스트되었으며 해당 Windows 버전에서 보장됩니다.

설치#

사전 요구 사항#

  • GPU 하드웨어: GPUDirect for Video 기술을 지원하는 NVIDIA GPU가 호스트 PC에 장착되어 있어야 합니다.
  • Parallel Computing Platform/API: 다음 패키지 중 하나가 호스트 PC에 설치되어 있어야 합니다.
    • CUDA(Compute Unified Device Architecture): NVIDIA의 병렬 프로그래밍 프레임워크
    • OpenGL(Open Graphics Library)
  • 프레임 그래버 하드웨어: 선택한 Basler 프레임 그래버가 호스트 PC에 연결되어 있습니다. 프레임 그래버 연결 방법에 대한 자세한 내용은 Connecting the Frame Grabber를 참조하십시오.
  • Framegrabber SDK: Basler Framegrabber SDK 5.10.0 이상이 설치되어 있습니다. 런타임 소프트웨어 설치 방법에 대한 자세한 내용은 Installing the Framegrabber SDK를 참조하십시오.
  • Applet: 선택한 앱릿이 프레임 그래버에 플래시되었으며(marathon 프레임 그래버 전용) 활성 앱릿으로 선택되었습니다. marathon 프레임 그래버 플래시 방법에 대한 자세한 내용은 Flashing을 참조하십시오. 앱릿을 활성 앱릿으로 선택하는 방법에 대한 자세한 내용은 Changing the Active Applet을 참조하십시오.
  • GPUDirect for Video 지원 파일: Basler에서는 다음 파일을 제공합니다.
    • siso_gpudirect.dll: 라이브러리 파일
    • siso_gpudirect.h: 항상 필요한 일반 함수를 다루는 헤더 파일
    • siso_gpudirect_cuda.h: CUDA 작업에 필요한 헤더 파일
    • siso_gpudirect_gl.h: OpenGL 작업에 필요한 헤더 파일

GPUDirect for Video 지원 설치#

호스트 PC에 GPUDirect for Video 지원을 설치하려면:

  1. 라이브러리 파일 siso_gpudirect.dll을 Basler Framegrabber SDK 설치 디렉터리의 bin 하위 폴더(예: C:\Program Files\Basler\FramegrabberSDK_5.XX.X\bin)로 복사합니다.
  2. 헤더 파일을 Basler Framegrabber SDK 설치 디렉터리의 include 하위 폴더(예: C:\Program Files\Basler\FramegrabberSDK_5.XX.X\include)로 복사합니다.

파일을 설치의 언급된 하위 폴더에 복사한 후, Basler Framegrabber API를 통해 GPUDirect for Video 기능을 사용할 수 있습니다.

함수 참조#

Basler Framegrabber API를 통해 GPUDirect for Video를 제어하려면 CUDA 또는 OpenGL을 사용합니다.

CUDA 사용 전제 조건#

  • 라이브러리 파일 siso_gpudirect.dll이 Framegrabber SDK 설치의 bin 하위 폴더로 복사되었습니다.
  • 헤더 파일 siso_gpudirect.h 및 siso_gpudirect_cuda.h가 Framegrabber SDK 설치의 include 하위 폴더로 복사되었습니다.

OpenGL 사용 전제 조건#

  • 라이브러리 파일 siso_gpudirect.dll이 Framegrabber SDK 설치의 bin 하위 폴더로 복사되었습니다.
  • 헤더 파일 siso_gpudirect.h 및 siso_gpudirect_gl.h가 Framegrabber SDK 설치의 include 하위 폴더로 복사되었습니다.

사용 가능한 함수#

Basler Framegrabber API를 통해 GPUDirect for Video 기술을 제어하는 함수는 CUDA와 OpenGL에서 동일합니다. Basler Framegrabber API는 다음과 같은 함수를 제공합니다.

기능 GDInitLib
설명 전역 초기화입니다. 초기화를 위해 다른 함수보다 먼저 이 함수를 호출하십시오.
Parameters
  • [in] Fg_Struct* iFgHandle:
    유효한 프레임 그래버 인스턴스의 핸들입니다. 라이브러리 설명서 참조 fglib Framegrabber API Manual을 참조하십시오.
  • [in] GD_CONTEXT iFlag:
    여기에서 사용할 기술을 정의합니다. 가능한 값(GD_CTX_LIST):
    • GD_CTX_CUDA: CUDA와의 사용을 나타냄
    • GD_CTX_OPENGL: OpenGL과의 사용을 나타냄
    • GD_CTX_D3D9: 지원되지 않음
    • GD_CTX_D3D11: 지원되지 않음
기능 GDCloseLib
설명 더 이상 라이브러리 함수가 필요하지 않은 경우, 이 함수를 호출하여 다음의 리소스를 정리해야 합니다. GDInitLib 함수 호출. 각 호출은 GCCloseLib 은(는) 선행 호출과 동반되어야 합니다. GDInitLib.
Parameters 없음
기능 GDGetContextInfo
설명 현재 컨텍스트에 대한 정보를 얻으려면 이 함수를 사용하십시오.
Parameters
  • [in] GD_CONTEXT_INFO_CMD iInfoCmd:
    얻고자 하는 정보를 지정하려면 이 파라미터를 사용하십시오. 사용 가능한 유일한 값: GD_CONTEXT_STRIDE_LENGTH. :
    Stride length는 다음과 같이 정의됩니다. 비디오 이미지가 Memory에 저장될 때, 각 픽셀 행 뒤에 추가 패딩 바이트가 포함될 수 있습니다. 패딩 바이트는 이미지가 Memory에 저장되는 방식에는 영향을 주지만 이미지 표시에는 영향을 주지 않습니다. Stride는 Memory 내 한 픽셀 행에서 다음 픽셀 행까지의 바이트 수입니다. Stride는 Pitch라고도 합니다. 패딩 바이트가 있는 경우, 다음 그림과 같이 Stride가 이미지 너비보다 큽니다. 치수가 같은 비디오 프레임을 포함하는 두 개의 버퍼는 서로 다른 Stride를 가질 수 있습니다. 비디오 이미지를 처리할 때는 Stride를 고려해야 합니다.Stride Length:
    소스: https://msdn.microsoft.com/en-us/library/windows/desktop/aa473780(v=vs.85).aspx:
    정의한 이미지 치수가 패딩 제약 조건을 충족하는지 확인하십시오.
  • [out] void * pBuffer<:/br>The information provided (i.e. input value), for example, the value of the stride length, is written into this buffer. If pBuffer = NULL, piSize 정보(즉, 출력 값)를 저장하는 데 버퍼에 필요한 크기를 제공합니다.
  • [in/out] size_t * piSize:
    이 함수를 호출할 때는 다음의 크기를 정의해야 합니다. pBuffer 이 파라미터에서. 전달된 버퍼의 길이에 비해 크기가 너무 작은 경우, size 은(는) 버퍼 크기에 맞게 자동으로 조정됩니다. 호출 후 이 매개변수에는 에 기록된 바이트 수가 유지됩니다. pBuffer.
기능 GDRevokeBuffer
설명 어퀴지션 엔진에서 등록된 버퍼를 제거합니다. 이 함수는 이 버퍼와 연결된 내부적으로 할당된 모든 리소스를 해제합니다. 버퍼는 어떤 큐에도 대기 중이지 않은 경우에만 해제할 수 있습니다.
Parameters [in] BUFFER_HANDLE:
버퍼를 참조하는 핸들입니다. 버퍼 자체는 다음 함수를 통해 등록되었습니다. GDAllocateSourceBuffer, GDAnnounceCUDAArray, GDAnnounceTextureGL, 또는 GDAnnounceBufferGL.
기능 GDStartAcquisition
설명 어퀴지션 엔진을 시작합니다.
Parameters 없음
기능 GDStartAcquisitionEx
설명 어퀴지션 엔진을 시작합니다.
Parameters
  • [in] unsigned int apcTimeout:
    어퀴지션 엔진의 시간 초과 지속 시간(초)을 설정합니다.
    Default: 5초.
  • [in] unsigned int apcFlags:
    어퀴지션 엔진의 특정 기능을 활성화 또는 비활성화하는 플래그입니다.
    플래그 목록은 비동기 모드용 콜백 함수 등록 을(를) 참조하십시오.
    Default: GD_ACQUISITION_DEFAULT_FLAGS
    → 결과: FG_APC_IGNORE_TIMEOUTS | FG_APC_DELIVER_ERRORS.
    플래그 세부 정보:
    • FG_APC_DELIVER_ERRORS: 필수 항목: GDGetLastError 이(가) 올바르게 작동하도록 합니다.
    • FG_APC_IGNORE_TIMEOUTS: 에 지정된 시간 내에 이미지 데이터가 수신되지 않아도 취득 엔진이 계속 실행되도록 합니다. apcTimeout.
기능 GDStopAcquisition
설명 어퀴지션 엔진을 중지합니다.
Parameters 없음
기능 GDAllocateSourceBuffer
설명 이 함수는 단일 소스 버퍼용 Memory를 할당하고, 이 버퍼를 어퀴지션 엔진에 등록한 후, 해당 단일 버퍼를 참조하는 버퍼 핸들을 반환합니다.
Parameters
  • [in] uint32_t width: 이미지 너비
  • [in] uint32_t height: 이미지 높이
  • [in] GDBufferTypes type: 이 매개변수를 사용하여 Pixel Format을 정의하십시오. 가능한 값:
    • GD_UNSIGNED_BYTE
    • GD_BYTE
    • GD_UNSIGNED_SHORT
    • GD_SHORT
    • GD_UNSIGNED_INT
    • GD_INT
    • GD_FLOAT
    • GD_HALF_FLOAT
    • GD_UNSIGNED_BYTE_3_3_2
    • GD_UNSIGNED_BYTE_2_3_3_REV
    • GD_UNSIGNED_SHORT_5_6_5
    • GD_UNSIGNED_SHORT_5_6_5_REV
    • GD_UNSIGNED_SHORT_4_4_4_4
    • GD_UNSIGNED_SHORT_4_4_4_4_REV
    • GD_UNSIGNED_SHORT_5_5_5_1
    • GD_UNSIGNED_SHORT_1_5_5_5_REV
    • GD_UNSIGNED_INT_8_8_8_8
    • GD_UNSIGNED_INT_8_8_8_8_REV
    • GD_UNSIGNED_INT_10_10_10_2
    • GD_UNSIGNED_INT_2_10_10_10_REV
  • [out] BUFFER_HANDLE*: 핸들
기능 GDRegisterEvent
설명 이벤트 객체를 특정 위치에 등록합니다. iEventID.
Parameters
  • [in] EVENT_TYPE iEventID:
    가능한 값:
    • EVENT_ERROR: 모듈 오류 알림.
    • EVENT_COPY_FINISHED: 새로 채워진 버퍼에 대한 알림. 이벤트 데이터는 다음 위치에 저장됩니다. EVENT_NEW_BUFFER_DATA. 또는 다음 함수를 사용할 수 있습니다. GDMemcpy.
  • [out] EVENT_HANDLE* phEvent:
    이 핸들을 사용하여 해당 함수를 통해 이벤트에 액세스할 수 있습니다. GDEventGetData.
기능 GDEventGetData
설명 이벤트 핸들과 연결된 이벤트 데이터 큐에서 다음 이벤트 데이터 항목을 검색합니다.
Parameters
  • [in] EVENT_HANDLE phEvent:
    해당 함수를 통해 이미 이 핸들을 생성했습니다. GDRegisterEvent.
  • [out] void * pBuffer:
    제공된 정보(즉, 출력 값)가 이 버퍼에 기록됩니다. 만약 pBuffer = NULL, piSize 정보(즉, 출력 값)를 저장하는 데 버퍼에 필요한 크기를 제공합니다.
  • [in/out] size_t * piSize:
    이 함수를 호출할 때는 다음의 크기를 정의해야 합니다. pBuffer 이 파라미터에서. 전달된 버퍼의 길이에 비해 크기가 너무 작은 경우, size 은(는) 버퍼 크기에 맞게 자동으로 조정됩니다. 호출 후 이 매개변수에는 에 기록된 바이트 수가 유지됩니다. pBuffer.
  • [in] uint64_t iTimeout<:/br/> The function doesn't deliver any output until the time-out is over (in this case, the function returns state GD_ERR_TIMEOUT ) 또는 지정된 이벤트가 발생할 때까지.
기능 GDMemcpy
설명 프레임 그래버가 전송한 다음 프레임을 GPU로 복사합니다. 복사 프로세스를 트리거하려면 이 함수를 사용하십시오. 결과는 다음과 같이 전달됩니다. EVENT_NEW_BUFFER_DATA 유형.
Parameters
  • [out] void * pBuffer:
    값이 이 버퍼에 기록됩니다. 만약 pBuffer = NULL, piSize 은(는) 저장하기 위해 버퍼에 필요한 크기를 제공합니다. EVENT_NEW_BUFFER_DATA 유형.
  • [in/out] size_t * piSize:
    이 함수를 호출할 때는 다음의 크기를 정의해야 합니다. pBuffer 이 파라미터에서. 전달된 버퍼의 길이에 비해 크기가 너무 작은 경우, size 은(는) 버퍼 크기에 맞게 자동으로 조정됩니다. 호출 후 이 매개변수에는 에 기록된 바이트 수가 유지됩니다. pBuffer.
기능 GDBufferUnblock
설명 이 함수는 복사 프로세스를 위해 버퍼의 차단을 해제합니다. 의 멤버로 수신한 각 버퍼는 EVENT_NEW_BUFFER_DATA 이 함수를 통해 차단을 해제해야 합니다(예: 새로운 복사 프로세스를 위한 버퍼를 확보하기 위해). 버퍼 차단을 해제하기 전에 버퍼 콘텐츠에 대한 작업이 완료되었는지 확인하십시오.
Parameters [in] BUFFER_HANDLE phBuffer
기능 GDBufferGetDataPtr
설명 이 함수는 버퍼의 Memory 위치 시작점에 대한 포인터를 반환합니다. 버퍼는 다음으로 생성되어야 합니다. GDAllocateSourceBuffer 함수입니다.
Parameters
  • [in] BUFFER_HANDLE phBuffer
  • [out] void** mDataPtr :
    이 버퍼가 관리하는 원시 데이터(raw data)를 가리키는 포인터를 포함합니다.
기능 GGDGetBufferInfo
설명 이 버퍼 핸들과 연결된 버퍼 모듈에 대한 정보를 조회하려면 이 함수를 사용하십시오.
Parameters
  • [in] BUFFER_HANDLE hBuffer
  • [in] GD_BUFFER_INFO_CMD iInfoCmd:
    가능한 값:
    • GD_BUFFER_TIMESTAMP: 버퍼의 마지막 변경 타임스탬프.
    • GD_BUFFER_TIMESTAMP_FREQUENCY: 타임스탬프 주파수.
    • GD_BUFFER_PICNUMBER: 버퍼 내용의 인덱스.
    • GD_BUFFER_DATA_PTR: 버퍼에서 관리하는 로 데이터(raw data)에 대한 포인터.
  • [out] void * pBuffer:
    값이 이 버퍼에 기록됩니다. 만약 pBuffer = NULL, piSize 데이터를 저장하기 위해 버퍼에 필요한 크기를 제공합니다.
  • [in/out] size_t * piSize :
    이 함수를 호출할 때는 다음의 크기를 정의해야 합니다. pBuffer 이 파라미터에. (전달된 버퍼의 길이에 비해) 크기가 너무 작은 경우, 크기 값은 버퍼 크기에 맞게 자동으로 조정됩니다. 호출 후, 이 파라미터는 에 기록된 바이트 수를 담습니다. pBuffer.
기능 GDGetLastError
설명 발생한 마지막 오류와 연결된 메시지를 조회하려면 이 함수를 사용하십시오.
Parameters
  • [out] char * pMsgBuffer:
    값이 이 버퍼에 기록됩니다. 만약 pMsgBuffer = NULL, piSize 은(는) 오류 메시지를 저장하기 위해 버퍼에 필요한 크기를 제공합니다.
  • [in/out] size_t * piSize :
    이 함수를 호출할 때는 다음의 크기를 정의해야 합니다. pMsgBuffer 이 매개변수에 지정합니다. (전달되는 메시지에 비해) 크기가 너무 작은 경우 다음의 값이 size 은(는) 메시지 크기에 맞게 자동으로 조정됩니다. 호출 후, 이 파라미터는 에 기록된 바이트 수를 담습니다. pBuffer.
기능 GDAnnounceTextureGL
설명 이 함수는 대상 개체를 복사 작업의 목적지로 선언하고 단일 버퍼를 참조하는 버퍼 핸들을 반환합니다.
Parameters
  • [in]GLuint texture:
    openGL로 생성한 텍스처의 ID입니다.
  • [out]BUFFER_HANDLE* handle:
    이 버퍼를 가리키는 핸들입니다.
기능 GDAnnounceBufferGL
설명 이 함수는 대상 개체를 복사 작업의 목적지로 선언하고 단일 버퍼를 참조하는 버퍼 핸들을 반환합니다.
Parameters
  • [in]GLuint buffer:
    openGL로 생성한 텍스처의 ID입니다.
  • [out]BUFFER_HANDLE* handle:
    이 버퍼를 가리키는 핸들입니다.
기능 GDAnnounceCUDAArray
설명 이 함수는 대상 개체를 복사 작업의 목적지로 선언하고 단일 버퍼를 참조하는 버퍼 핸들을 반환합니다.
Parameters
  • CUarray array:
    CUDA로 생성한 버퍼를 참조하는 핸들입니다.
  • BUFFER_HANDLE* handle:
    이 버퍼를 가리키는 핸들입니다.

데이터 형식#

STRUCT 이름 EVENT_NEW_BUFFER_DATA
설명 이벤트가 소스 버퍼의 콘텐츠를 타겟 버퍼로 복사했습니다.
Parameters
  • BUFFER_HANDLE SourceBufferHandle:
    해당 함수를 통해 이 버퍼를 생성했습니다. GDAllocateSourceBuffer.
  • BUFFER_HANDLE TargetBufferHandle:
    해당 함수를 통해 이 버퍼를 생성했습니다. GDAnnounceCUDAArray (CUDA) 또는 다음 함수를 통해 생성되었습니다. GDAnnounceTextureGL 또는 PGDAnnounceBufferGL (OpenGL).

Enumerations#

GD_CTX_LIST
GD_CTX_CUDA CUDA 컨텍스트 이름
GD_CTX_OPENGL OpenGL 컨텍스트의 이름
GD_CTX_D3D9 지원되지 않음
GD_CTX_D3D11 지원되지 않음
GD_CONTEXT_INFO_LIST
GD_CONTEXT_STRIDE_LENGTH Stride Length:
소스: https://msdn.microsoft.com/en-us/library/windows/desktop/aa473780(v=vs.85).aspx
GDBufferTypes
GD_UNSIGNED_BYTE
GD_BYTE
GD_UNSIGNED_SHORT
GD_SHORT
GD_UNSIGNED_INT
GD_INT
GD_FLOAT
GD_HALF_FLOAT
GD_UNSIGNED_BYTE_3_3_2
GD_UNSIGNED_BYTE_2_3_3_REV
GD_UNSIGNED_SHORT_5_6_5
GD_UNSIGNED_SHORT_5_6_5_REV
GD_UNSIGNED_SHORT_4_4_4_4
GD_UNSIGNED_SHORT_4_4_4_4_REV
GD_UNSIGNED_SHORT_5_5_5_1
GD_UNSIGNED_SHORT_1_5_5_5_REV
GD_UNSIGNED_INT_8_8_8_8
GD_UNSIGNED_INT_8_8_8_8_REV
GD_UNSIGNED_INT_10_10_10_2
GD_UNSIGNED_INT_2_10_10_10_REV
EVENT_TYPE_LIST
EVENT_ERROR 모듈 오류 알림.
EVENT_COPY_FINISHED 새로 채워진 버퍼에 대한 알림. 이벤트 데이터는 다음 위치에 저장됩니다. EVENT_NEW_BUFFER_DATA.
GD_BUFFER_INFO_LIST
GD_BUFFER_TIMESTAMP 버퍼 내 마지막 변경 타임스탬프
GD_BUFFER_TIMESTAMP_FREQUENCY 타임스탬프 주파수
GD_BUFFER_PICNUMBER 버퍼 콘텐츠의 색인
GD_BUFFER_DATA_PTR 버퍼에서 관리하는 원시 데이터에 대한 포인터

예제#

사전 요구 사항#

  • Basler로부터 받은 예제 폴더를 사용할 수 있습니다.
  • PC에 Visual Studio 15.x 이상이 설치되어 있습니다.
  • PC에 CMake가 설치되어 있습니다.
  • 관련 라이브러리가 PC에 설치되어 있습니다.

예제 사용 방법#

Basler가 제공하는 예제를 사용하려면 다음을 수행하십시오.

  1. Basler로부터 받은 예제 폴더를 호스트 PC의 하드 드라이브로 복사합니다.

    CUDA 예제

    CUDA 예제의 경우, PC에 이미 설치된 라이브러리 외에 cuda.lib와 cudart.lib만 필요합니다.

    OpenGL 예제: CMake가 glew를 찾아야 합니다.

    CMake가 glew를 찾을 수 있는지 확인하십시오. 그렇지 않으면 프로젝트가 올바르게 빌드되지 않습니다.

    CMake는 사용자 조작 없이 glew를 찾을 수 있어야 합니다. 그러나 glew를 찾지 못하는 경우:

    1. 관련 환경 변수를 설정합니다:

      GLUT_ROOT_PATH 예를 들어 D:\libs\freeglut-2.8.1\win32

      GLEW_ROOT_PATH 예를 들어 D:\libs\glew-1.13.0\glew-1.13.0\Win32

    2. CMake가 여전히 glew를 찾는 데 문제가 있는 경우 CMake 프로젝트 변수를 수동으로 설정하십시오.

      GLEW_INCLUDE_DIR 예를 들어 D:/libs/glew-1.13.0/glew-1.13.0/x64/include

      GLEW_LIBRARY 예를 들어 D:/libs/glew-1.13.0/glew-1.13.0/x64/lib/glew32.lib

      OPENGL_gl_LIBRARY 예를 들어 opengl32

      OPENGL_glu_LIBRARY 예를 들어 glu32

  2. examples\gpudirect\cuda 또는 examples\gpudirect\opengl을 소스 디렉터리로 사용하여 CMake로 프로젝트를 생성합니다.

  3. 예제를 실행합니다.

예제를 실행하는 동안 앱릿을 선택하라는 메시지가 표시됩니다. marathon 프레임 그래버의 경우, 예를 들어 Acq_SingleCXP6X4AreaGray.dll과 같은 그레이스케일 앱릿을 선택하세요. 이름이 일부 잘려서 끝부분만 보일 수 있습니다.

marathon Frame Grabbers의 경우: 예제에 Grayscale Applet 사용

Basler NVIDIA GPUDirect for Video 지원은 흑백 포맷뿐만 아니라 컬러 포맷에서도 작동합니다.

하지만 두 예제 모두 그레이스케일 앱릿용으로 설계되었으므로, 예제 사용 시 (marathon 프레임 그래버 전용인) Acq_SingleCXP6X4AreaGray.dll 같은 그레이스케일 앱릿을 선택해야 합니다.