tensorflow / io

Dataset, streaming, and file system extensions maintained by TensorFlow SIG-IO
Apache License 2.0
691 stars 281 forks source link

Genicam camera support #826

Open bhack opened 4 years ago

bhack commented 4 years ago

Ref. https://github.com/tensorflow/io/issues/814 The majority of industrial and machine vision cameras need GeniCam support.

yongtang commented 4 years ago

I looked into GenICam's specification. If I understand correctly, looks like for a device than conform to the specification, it likely exposes GenICam's Transport Layer (TL) in a .so (named as .cti). This covers image capture part. The configuration of a camera is in GenICam API, which may not be needed for image capture (need to confirm).

Since TL is C API and is well-defined, we very much could just use TL header file to directly operate and get the image capture. In fact it seems Harverster is access the TL's python binding which is pretty much the same method.

The only requirement is that camera need a TL Producer driver which typically bundled by vendors anyway.

This could help avoid pulling additional dependences (like Harvester). All we need could be just the Reference header file for GenTL 1.6 in: https://www.emva.org/standards-technology/genicam/genicam-downloads/

Will look further into this direction.

bhack commented 4 years ago

It Is correct if we want to cover intially the capture part. Also in V4L and OSX currently we are not covering camera settings control of these API if I remeber the PR correctly (could be useful later to have camera control settings).