Cythonを使用してUSBカメラから画像を取得し、発信者に返されるPIL画像に変換しています。
画像のデータは、画像取得関数によって返される構造体の「convert_buffer」メンバーが指す文字配列にあります。
struct FlyCaptureImage:
/// stuff
char * convert_buffer
/// more stuff
現在、これを実行してPILイメージに変換しています。
cdef unsigned char *convert_buffer
cdef Py_ssize_t byte_length
cdef bytes py_string
// get the number of bytes into a Py_ssize_t type
byte_length = count
// slice the char array so it looks like a Python str type
py_string = convert_buffer[:byte_length]
// create the PIL image from the python string
pil_image = PILImage.fromstring('RGB', (width, height), py_string)
データをPython文字列に変換するこの手順では、ゼロコピーイベントのように聞こえるまでに2ミリ秒かかります。カメラAPIが提供するchar*画像データポインタからPILに画像を作成させることは可能ですか?