2017-11-16 9 views
0

私はOpenCv-Pythonを使い始めました。 ベイヤー形式の画像のピクセル値を見たいと思っています。 OpenCVの-のPythonを使用して、Iはピクセル値を表示するために、次のコードを書かれている:バイエルフォーマットのピクセルを表示画像

import numpy as np 
import cv2 
image = cv2.imread("bayer_small.png") 
image_data = np.array(image) 
print(image_data[50][50]) 

#Output is printed as " [ 0 0 102] 

私の期待は、単一の画素値:102

なぜこれが起こっていますか?イメージはベイヤー形式でしかないので、ピクセルごとに1つのコンポーネントしか期待していません。

他の2つのコンポーネントで出力がゼロになっていることを理解しています。しかし、私はベイヤー形式のデータだけを期待しています。例えば、最初の行はBGBGBGBGです。

私の目標は、アルゴリズムを実装することです。したがって、ステップバイステップでやってみてください。

編集1:通常の画像をベイヤー形式に変換できる内蔵機能はありますか?

+1

Do 'cv2.imread(" bayer_small.png "、cv2.IMREAD_UNCHANGED)'。 – sgarizvi

答えて

3

あなたのピクチャにはおそらくベイヤーマトリックスのデータが含まれていますが、RGBフォーマットを使用しています。おそらく、2つのチャンネルに各ピクセルに0が含まれていると仮定できます。それを正規化するために

data = np.sum(image_data, axis=2) 

:ので、あなたが第3の軸に沿って全体画像にベクトル化の和を適用する必要があります。

ところで、data[50][50]ではなく、より簡潔な構文:data[50, 50]でNumpy配列のデータにアクセスできます。

+0

答えを完成させるだけで、 'cv2.imread(" bayer_small.png ")'はデフォルトで 'cv2.imread(" bayer_small.png "、flag)でBGRイメージを読み込みます。 'IMREAD_GREYSCALE'または' IMREAD_UNCHANGED'がこの場合に使用される最良のフラグです。 – api55