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件) を見る