rgbデータを含む1次元配列を3D RGB配列に変換する最良の方法は何ですか?私の配列がフォームであるしかし1次元配列を3D RGB配列に変換する
配列がこの順番にあった場合、それは簡単だろうが、(単一リシェイプ)
RGB RGB RGB RGB ...
、
RRRR ... GGGG .... BBBB
または時々EVエン、
GGGG .... RRRR .... BBBB
(結果はまだRGBないGRBでなければなりません)私はもちろん、これを達成するためにいくつかのPythonの方法を導き出すことができ、私もしてみてくださいでした数え切れないほどの解決策、それは動作しますが、それは明らかに悪い解決策です私はおそらく組み込みのnumpy関数、おそらく最善の方法ですか?
私のソリューション:
for i in range(len(video_string) // 921600 - 1): # Consecutive frames iterated over.
frame = video_string[921600 * i: 921600 * (i + 1)] # One frame
array = numpy.fromstring(frame, dtype=numpy.uint8) # Numpy array from one frame.
r = array[:307200].reshape(480, 640)
g = array[307200:614400].reshape(480, 640)
b = array[614400:].reshape(480, 640)
rgb = numpy.dstack((b, r, g)) # Bring them together as 3rd dimention
ループのためのあなたを混乱させる、私はただの一部ではありませんビデオ、のような文字列で相互に連結したフレームを、持っていてはいけません質問。
What did not help me:この質問では、r、g、bの値は既に2次元配列であるため、私の状況には役立ちません。
EDIT1:所望の配列形状が2D
から640 x 480 x 3
高さや幅を知らずに3D配列に変更するにはどうすればよいですか? – Divakar
@Divakar申し訳ありませんが、私は編集しますが、フレームは921600バイトで、それを3つに分けて見ることができます。私たちは307200を持っています。これは640x480の製品です。 – Rockybilly