Updated:
質問
RGB変換したデータを画像として出力すると、90度回転、反転している。
回答
RGB変換したデータを画像出力する際、データ形式に注意してください。
adam_ai_run_net()へのデータを入力する場合:Planar形式
numpy.reshapeで画像出力する場合 :Packed形式
データ形式とは
AdamAppで取り扱うRGBデータ形式はPlanar形式とPacked形式です。
Planar形式は、それぞれのチャンネルごとにまとめてデータが並んでいます。
Packed形式は、R、G、Bのデータが1組となって並んでいます。
libAdamApiPython.adam_cv_yc2rgb
で変換されたRGBデータはPlanar形式です。adam_ai_run_net
にRGBデータを入力する際は、Planar形式である必要があります。
RGBデータを画像に変換する
RGBデータを画像に変換するために、numpy.reshape関数を使用します。
numpy.reshape(l,m,n)を実行することで、配列をn x m x lの配列に並び替えます。
また、第4引数にorder
を指定することでデータの並び順を指定することができます。
例:
a = np.arange(24) # a = [0,1,2・・・22,23] print(a.reshape([2, 3, 4], order='C')) #C言語方式(行優先)(デフォルト) # [[[ 0 1 2 3] # [ 4 5 6 7] # [ 8 9 10 11]] # # [[12 13 14 15] # [16 17 18 19] # [20 21 22 23]]] print(a.reshape([2, 3, 4], order='F')) #FORTRAN(列優先) # [[[ 0 6 12 18] # [ 2 8 14 20] # [ 4 10 16 22]] # # [[ 1 7 13 19] # [ 3 9 15 21] # [ 5 11 17 23]]]
RGBデータを画像に変換する場合は、RGBデータをPlanar→Packed形式に変換してからnumpy.reshape()してください。
Packed形式からnumpy.reshape
numpy.reshape([height, width, 3], order='C')
Packed形式から変換すると、正しく並び替えできます。
参考:Planar形式からnumpy.reshape (90度回転、反転してしまう)
numpy.reshape([width, height, 3], order='F')
Planar形式から変換した場合、order='F'
で指定しても90度回転、左右反転した状態で並び替えられます。
RGBデータのデータ形式変換
RGBデータの形式を変更するためには、adam_cv_rgb_convert
を使用してください。
参考ページ:
https://numpy.org/doc/stable/reference/generated/numpy.reshape.html