Python
eGrabber can also be used in Python.
설치
The Python bindings for eGrabber are provided in a Pyhon wheel installation package (a .whl
file) located in the python
subdirectory of the eGrabber installation directory1. Python 설정에 따라 다음과 같이 쉽게 설치할 수 있습니다.
python -m pip install <PATH_TO_EGRABBER_WHL>
첫 번째 예
이 예는 그래버를 생성하고 인터페이스, 장치 및 포함된 원격 장치 모듈에 대한 기본 정보를 표시합니다. 이것은 첫 번째 C++ eGrabber 예제의 Python 버전입니다:
from egrabber import * # 1
card_ix = 0
device_ix = 0
def showInfo():
gentl = EGenTL() # 2
grabber = EGrabber(gentl, card_ix, device_ix) # 3
card = grabber.interface.get('InterfaceID') # 4
dev = grabber.device.get('DeviceID') # 5
width = grabber.remote.get('Width') # 6
height = grabber.remote.get('Height') # 6
print('Interface: %s' % card)
print('Device: %s' % dev)
print('Resolution: %ix%i' % (width, height))
try: # 7
showInfo()
except Exception as e: # 7
print('error: %s' % e)
1. | egrabber 모듈을 가져옵니다. |
2. | EGenTL 객체를 만듭니다. 이렇게 하면 GenTL 제작자(예: coaxlink.cti )를 찾고, 열고, 초기화합니다. |
3. | EGrabber 객체를 만듭니다. 생성자는 2단계에서 만든 gentl 객체가 필요합니다. 또한 선택적 인수로 사용할 인터페이스와 장치의 색인을 가져옵니다. |
4. | Coaxlink 카드의 ID를 찾는 데 GenApi을 사용하십시오. 인터페이스 모듈의 답변을 원하므로 get 이(가) grabber.interface 에서 완료됩니다. |
5. | 장치의 ID를 찾으십시오. 이번에는 장치 모듈을 대상으로 grabber.device 을 사용합니다. |
6. | 마지막으로 카메라 해상도를 읽습니다. 이번에는 카메라에서 값을 읽어야 하기 때문에 grabber.remote 을 사용합니다. |
7. | egrabber 는 예외를 사용하여 오류를 보고하므로 코드를 try: ... except: ... 블록 안에 넣습니다. |
프로그램 출력 예:
Interface: PC1633 - Coaxlink Quad G3 (2-camera) - KQG00014
Device: Device0
Resolution: 4096x4096
C++와 Python eGrabber의 차이
eGrabber 클래스
C++ | Python |
---|---|
EGrabber<>
|
EGrabber
|
EGrabber<CallbackOnDemand>
|
EGrabber
|
EGrabber<CallbackSingleThread>
|
- |
EGrabber<CallbackMultiThread>
|
- |
Buffer
|
Buffer
|
ScopedBuffer
|
with-block에 사용된 Buffer |
EGrabber
방법
● | C++ API에서 메서드 이름은 camelCase 에 작성됩니다. Python에서 메서드 이름은 lower_case 에 작성됩니다. 예를 들어 C++ reallocBuffers 는 Python에서 realloc_buffers 이(가) 됩니다. |
● | Event notification via callback functions is not available in the current eGrabber Python bindings. |
● | 기타 차이점: |
C++ | Python |
---|---|
getInteger< MODULE >(f)
|
MODULE .get(f, dtype=int)
|
getFloat< MODULE >(f)
|
MODULE .get(f, dtype=float)
|
getString< MODULE >(f)
|
MODULE .get(f, dtype=str)
|
getStringList< MODULE >(f)
|
MODULE .get(f, dtype=list)
|
- | MODULE .get(f, dtype=bool)
|
- | MODULE .get(f)
|
setInteger< MODULE >(f, v)
|
MODULE .set(f, v)
|
setFloat< MODULE >(f, v)
|
MODULE .set(f, v)
|
setString< MODULE >(f, v)
|
MODULE .set(f, v)
|
execute< MODULE >(f)
|
MODULE .execute(f)
|
여기서 MODULE
은 system
, interface
, device
, stream
또는 remote
(으)로 대체될 수 있습니다.