LoginSignup
1
1

More than 1 year has passed since last update.

OpenCVとNumPy環境におけるグレースケール画像生成

Last updated at Posted at 2019-10-18

初めに(^ω^)

画像処理を行っていく予定です。様々な画像を用いて画像処理を行う際には画像をそのままの形(カラー画像等データ量が多いもの)で扱うことは稀です。
カラー画像をグレースケール画像に変換して扱う場面が多くあります。
そのため、今回はグレースケール画像を作成してみたいと思います。
使用しているライブラリはOpenCVNumPyです。
ライブラリの使用方法は、ソースコード内に出現した際に解説を入れていく予定ですので初心者の方も安心してみられると思いたいです(希望)

作成したソースコード

#-----------------------------------------
# openCVとNumPy環境におけるグレースケール画像生成
#-----------------------------------------
import numpy as np
import cv2

#画像等の保存先
hoge = 'ファイルの場所(^ω^)'
#.txtデータ保存先指定
file = './hoge.txt'

#カラー読み込み
img_color = cv2.imread(hoge+'使用したい画像(拡張子付きで)')
#グレースケールで読み込み
img_gray = cv2.imread(hoge+'使用したい画像(拡張子付きで)',0)

#Numy配列に保存
arrangement = np.array(img_gray)
#画像サイズ取得
shape = arrangement.shape
#Numy配列に保存したものをテキストに書き込み出力
np.savetxt(hoge+file, arrangement, fmt="%3.0f", delimiter=",")

#配列出力
print (arrangement)
#画像出力
cv2.imwrite(hoge+'gray.png', arrangement)

コード解説

①importって?

import numpy as np
import cv2

importは自分が使用したいライブラリを宣言しているところです。
inport numpy as np
の一文は、numpyという文字列をnpと置き換えてかきますよという意味ですよ。

②画像の読み込み方法

#カラー読み込み
img_color = cv2.imread(hoge+'使用したい画像(拡張子付きで)')
#グレースケールで読み込み
img_gray = cv2.imread(hoge+'使用したい画像(拡張子付きで)',0)

OpenCVの中にあるimread()を呼び出して画像を読み込みます。
cv2.imread()の使用方法は、
hoge = cv2.imrad([ファイルの名前],[オプション])
となっております。
コード内を見ていただけたらわかるかと思いますが、オプションのところに0を入れたら画像をグレースケールで読み込むことができます。

③画像の中身をふむふむ(おまけ)

#Numy配列に保存
arrangement = np.array(img_gray)
#画像サイズ取得
shape = arrangement.shape
#Numy配列に保存したものをテキストに書き込み出力
np.savetxt(hoge+file, arrangement, fmt="%3.0f", delimiter=",")

数値計算ライブラリNumPyを用いてぐりぐりしました。
np.arrayを用いて画像の画素値をim配列にとろとろするために、NumPyの中にあるarray()を呼び出して配列を作成します。
np.array()の使用方法は、
hoge = np.array([画像を読み込んだ変数])
となっています。
そして、その画素値をテキストファイルに保存するためにNumPyの中にあるsavetxt()を呼び出してテキストを保存します
np.savetxt()の使用方法は、
np.savetxt([保存先のファイルの名前], [保存したい配列], [有効桁数],[区切る文字])
となっています。

④画像の保存方法

#画像出力
cv2.imwrite(hoge+'gray.png', arrangement)

OpenCVの中にあるimrite()を呼び出して画像を読み込みます
cv2.imread()の使用方法は、
hoge = cv2.imwrite([ファイルの名前.拡張子],[保存したい配列])
となっております

これでコードの説明は終わりです(疲れた)

参考文献

note.nkmk.me 様

Python Examples 様

DeepAge 様

NumPy 配列の基礎 様

目次のようなもの

Re:ゼロから始める機械学習生活(深層学習もあるよ)
ここに進捗状況等を載せてます。
今まで書いたものを一覧にしていたりするので見てみてください!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1