画像処理ライブラリOpenCVの画像はNumpyのndarray形式なので、画像を新規に生成する場合ndarrayを作成すればよい
OpenCV、Numpyを使うにはインポートが必要。
OpenCV
import cv2
Numpyは、しばしば次のようにnpと略されてインポートされる。
import numpy as np
1. グレースケール画像の生成
グレースケール画像は0-255の256画素値の1チャンネル画像。全要素の値が0のndarrayを生成するnumpy.zeros、全要素の値が1のndarrayを生成するnumpy.ones、全要素が任意の値となるndarrayを生成するnumpy.fill等により生成する。
numpy.zerosで幅400ピクセル高さ250ピクセルの黒い画像(画素値0)を生成する例。OpenCVの画像フォーマットは(高さのピクセル数、幅のピクセル数、チャンネル数)でグレースケール画像はチャンネル数が1なので引数に(250, 400, 3)を指定する。またdata-typeとして符号なし8ビット整数のデータ型を指定する引数、numpy.uint8を指定する。
import numpy as np import cv2 img = np.zeros((250, 400, 1), np.uint8) cv2.imwrite('img.jpg', img)
実行結果
numpy.zerosで生成した全要素の値が0のndarrayに100を加算し、全要素が100のndarrayとして灰色の画像を作成する例
import numpy as np import cv2 img = np.zeros((250, 400, 1), np.uint8)+100 cv2.imwrite('img.jpg', img)
実行結果
全要素の値が1のndarrayを生成するnumpy.onesを使用する例。
import numpy as np import cv2 img = np.ones((250, 400, 1), np.uint8)*200 cv2.imwrite('200.jpg', img)
実行結果
全要素が任意の値を持つndarrayを生成するnumpy.fullを使用する例。引数にはndarrayの形状の他、要素の値(ここでは150)を指定する。
import numpy as np import cv2 img = np.full((250, 400, 1), 150, np.uint8) cv2.imwrite('img.jpg', img)
実行結果
2. カラー画像の生成
カラー画像ではチャンネル数がB(青)、G(緑)、R(赤)の3チャンネルとなるため、(高さのピクセル数、幅のピクセル数、チャンネル数3)ndarrayを生成すればよい。また、チャンネル別の値はインデクシングで設定できる。
幅400高さ250ピクセルの3チャンネルの画像を生成しBチャンネルの画素値を100、Gチャンネルの画素値を250、Rチャンネルの画素値を30とする例。
import numpy as np import cv2 img = np.zeros((250, 400, 3), np.uint8) img[:, :, 0] = 100 # Bチャンネルの値を100 img[:, :, 1] = 250 # Gチャンネルの値を250 img[:, :, 2] = 30 # Rチャンネルの値を30 cv2.imwrite('img.jpg', img)
実行結果
3. リファレンス
Numpy > numpy.zeros
Numpy > numpy.ones
Numpy > numpy.full
0 件のコメント:
コメントを投稿