いくつかのグレースケール画像を参照するためにcythonmemoryviewsを使用しています。私が書いたいくつかの画像処理コードでこれをうまく使用しました。ここで、いくつかのOpenCV関数を使用する必要があります。残念ながら、メモリビューを画像引数としてOpenCV関数に渡すことができないようです。コードはコンパイルされますが、実行されると、OpenCV関数呼び出しで「TypeError:is notanumpyarray」で停止します。
np.asarray(my_memoryview)を使用して、memoryviewをnumpy配列に戻すことができます。これは機能しますが、データをコピーするため、処理が遅くなります。
memoryviewのドキュメントでは、numpyへの強制についてhttp://docs.cython.org/src/userguide/memoryviews.html#coercion-to-numpyについて説明 しており、memoryviewをnumpyに強制できるようになっているようです。メモリをコピーせずに配列。しかし、私が書く場合:
im = np.asarray(<np.uint8_t[:, :]> my_memoryview)
コンパイルエラーが発生します:「ポインタまたは配列からのみcython.arrayを作成できます」
メモリビューをOpenCV関数に渡す方法、またはデータをコピーせずにメモリビューをnumpy配列に強制変換する方法についてのヘルプをいただければ幸いです。