OpenCV3とNumpyでブランク画像を作る
ブランク画像の作り方
用途はあまり無いと思いますが、、、黒や任意の画素値で塗りつぶした画像が欲しいことありますよね。 そういうときにお役立ちなNumpyの配列とOpenCVの画像保存のやり方です。
Numpyで配列を作り、OpenCVで保存する
考え方としてはとてもシンプルです。
- Numpyのzerosメソッドで0で埋められた配列を作る
 - 適当な画素値を設定する
 - cv2.imwriteで保存する
 
zerosはゼロ埋めの配列を作ります
imageArray = np.zeros((height, width, 3), np.uint8)
公式はこちら numpy.zeros — NumPy v1.13 Manual
shapeとdtypeを設定しました。
numpy.zeros(shape, dtype=float, order=‘C’)
shapeで確認できること
size = imageArray.shape[:2]
BGRのために配列は3次元で作っていますが、[:2]とすることでheight,widthを得ることができます
ここで注意しなければならないのですが、配列の「行数と列数」なので、(height,width)のタプルが返されるということです。
通常、画像を扱う時には640x480だったり、1920x1080だったり、width,heightの順番であることが多いですよね。
ここを間違えないようにしましょう。
dtypeの注意。デフォルトはfloat型
デフォルトはfloatのようですので注意しましょう。
The desired data-type for the array, e.g., numpy.int8. Default is numpy.float64.
このまま配列を画像として保存すると?
# 0で埋められた配列を画像として保存します
cv2.imwrite("blank.bmp", imageArray);
保存された画像はこちら

地味ですね。小さい画像ですみません
適当な画素値を設定してみる
今回はBGR(128,64,32)にしてみます
for h in range(0, height):
    for w in range(0, width):
        imageArray[h, w] = [128, 64, 32]
間違えないようにしましょう、BGRです〜
改めて保存してみた画像

地味な色を設定してしまいました。 すみません。。。。。
ということで、この手法で適当に画像を作り、色々と解析したりする準備ができると思います。

詳解 OpenCV ―コンピュータビジョンライブラリを使った画像処理・認識
- 作者: Gary Bradski,Adrian Kaehler,松田晃一
 - 出版社/メーカー: オライリージャパン
 - 発売日: 2009/08/24
 - メディア: 単行本(ソフトカバー)
 - 購入: 17人 クリック: 272回
 - この商品を含むブログ (35件) を見る
 

Learning OpenCV 3: Computer Vision in C++ With the OpenCV Library
- 作者: Adrian Kaehler,Gary Bradski
 - 出版社/メーカー: Oreilly & Associates Inc
 - 発売日: 2017/01/08
 - メディア: ペーパーバック
 - この商品を含むブログを見る
 

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- 作者: 斎藤康毅
 - 出版社/メーカー: オライリージャパン
 - 発売日: 2016/09/24
 - メディア: 単行本(ソフトカバー)
 - この商品を含むブログ (17件) を見る