次回より『ヒデログ』とご検索ください

【Python入門】OpenCVの読み込み・書き込みの方法

OpenCVの使い方について紹介します。

OpenCVの初歩

OpenCVの読み書きについて紹介します。

OpenCVのインストール

OpenCVをインストールするには以下のコマンドを打ってください。Anacondaの人もデフォルトでは用意されていないので、Terminalから以下のコマンドを入力してください。

$ pip install opencv-python

画像ファイルの読み込み

#pip install opencv-pythonでインストールしたパッケージをインポート
import cv2

# 第一引数:ファイルのパスを入れる、相対参照、絶対参照両方できます
# 第二引数 
# imread("filename",string type=cv2.IMREAD_COLOR)
# cv2.IMREAD_COLOR : カラー画像として読み込む.画像の透明度は無視される.デフォルト値
# cv2.IMREAD_GRAYSCALE : グレースケール画像として読み込む
# cv2.IMREAD_UNCHANGED : アルファチャンネルも含めた画像として読み込む
img1=cv2.imread("opencv.jpg")
img2=cv2.imread("opencv.jpg",cv2.IMREAD_GRAYSCALE)
# imshow("タイトル名",imreadの戻り値)
cv2.imshow("opencv1",img1)
cv2.imshow("opencv2",img2)
# waitKey(int delay=0)
# 引数を設定した場合「ms(ミリセカンド)」待ちます。
cv2.waitKey(0)
cv2.destroyAllWindows()
実行結果
opencv
opencv

アルファチャンネルとは?

アルファチャンネルについては分かりませんでした。一応引用をつけておきます。

アルファチャンネルとは、デジタル画像処理において、透過度の情報を扱うために用意された補助的なデータ領域のことである。

コンピュータで処理される画像データは、RGBカラーモデルと呼ばれる色情報によって表現されており、ピクセルごとに赤(Red)、緑(Green)、青(Blue)のデータ領域(チャンネル)を持っている。ここに透明度の情報であるアルファチャンネルを加えることで、半透明の色彩の表現が可能になっている。

32ビットの画像処理システムの場合、1ピクセル当たり、R、G、B、アルファチャンネルのそれぞれに8ビットのデータ領域が割り当てられている。アルファチャンネルに割り当てられたデータ量に応じて、完全な透明から完全な不透明までを段階的に表現できる。ただし、システムによってはアルファチャンネルのためのデータ領域が用意されていない場合もある。weblio辞書

cv2.waitKey()について

cv2.waitKey() はキーボード入力を処理する関数です.引数は入力待ち時間でミリ秒単位で指定します.この関数は,指定された時間だけキーボード入力を受け付けます.入力待ちの間に何かのキーを打てば,プログラムはそれ以降の処理を実行します.引数に 0 を指定した時は,何かしらのキーを打つまでキー入力を無期限で待ち続けます.以下で説明しますが,特定のキー入力のみを待つ(例えば a のみを待つ)ことも可能です.OpenCV-Python Tutorials 1 documentation

何書いてるか分からない場合は、以下を入力するおまじないと覚えておきましょう。

cv2.waitKey(0)
cv2.destroyAllWindows()

画像ファイルの保存

import numpy as np
import cv2

# 画像のサイズ
img_size = (216, 216)

# サイズが512 × 512の青色の画像を作成
# img:2次元配列
# dtype="unit8":8ビットの整数
# 内包表記[expression for item in iterable]
img = np.array([[[255, 0, 0] for _ in range(img_size[1])] for _ in range(img_size[0])], dtype="uint8")

# 作成した画像を表示、閉じる
cv2.imshow("blue", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 画像をファイル名"blue.jpg"で保存
cv2.imwrite("blue.jpg", img)
実行結果
以下のファイルが保存されます。
opencv

内包表記サンプル

a=[i for i in range(5)]
>>a
[0, 1, 2, 3, 4]

# '_'は使われない変数の場合、'_'で省略可能
b=[3 for _ in range(5)]
>>b
[3, 3, 3, 3, 3]

まとめ

OpenCVの基本的な使い方(ファイルの読み込み、保存)について紹介しました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です