画像の色味を変える
カラー画像からB(青)、G(緑)、R(赤)の輝度を個別に0にした画像を作ります。OpenCVで読み込んだカラー画像は 高さX幅X色(BGR) の3次元からなるndarrayに収められるので、[高さ全範囲、幅全範囲、色・青]=0のようにすることで決まった色を抜くことができます。
やること
- ファイル名を指定して画像ファイルを読み出す
- 画像の全画素の青の輝度を0にする
- 画像を別ウィンドウで表示する
- キー入力で表示用ウィンドウを破棄し終了
使った関数
- cv2.imread : 画像ファイルの読み出し
- cv2.imshow : 画像を別ウィンドウに表示する
環境
準備
画像ファイルはフリー写真素材ぱくたそからダウンロードさせていただき、ファイル名"donuts.jpg"で、jupyter notebookファイル(***.ipynb)と同じディレクトリに保存しました。
コード
import cv2 #OpenCVのインポート fname = "donuts.jpg" #画像ファイル名 img = cv2.imread(fname) #画像を読み出しオブジェクトimgに代入 #cv2.imreadで読み出したカラー画像は 高さ×幅×色(3要素)の3次元のndarrayとなっている #色3要素はB(青)、G(緑)、R(赤)それぞれの輝度を示す #全ての画素についてBの輝度を0としている(青が抜ける) img[:, :, 0] = 0 cv2.imshow("B=0",img) #別ウィンドウ"B=0"を開きimgを表示 cv2.waitKey(0) #キー入力待ち cv2.destroyAllWindows() #ウインドウを閉じる
実行結果
全画素の青の輝度が0になった画像が表示されます
コード
緑の画素を0にした場合
import cv2 #OpenCVのインポート fname = "donuts.jpg" #画像ファイル名 img = cv2.imread(fname) #画像を読み出しオブジェクトimgに代入 #cv2.imreadで読み出したカラー画像は 高さ×幅×色(3要素)の3次元のndarrayとなっている #色3要素はB(青)、G(緑)、R(赤)それぞれの輝度を示す #全ての画素についてGの輝度を0としている(緑が抜ける) img[:, :, 1] = 0 cv2.imshow("G=0",img) #別ウィンドウ"G=0"を開きimgを表示 cv2.waitKey(0) #キー入力待ち cv2.destroyAllWindows() #ウインドウを閉じる
実行結果
コード
赤の画素を0にした場合
import cv2 #OpenCVのインポート fname = "donuts.jpg" #画像ファイル名 img = cv2.imread(fname) #画像を読み出しオブジェクトimgに代入 img[:, :, 2] = 0 #cv2.imreadで読み出したカラー画像は 高さ×幅×色(3要素)の3次元のndarrayとなっている #色3要素はB(青)、G(緑)、R(赤)それぞれの輝度を示す #全ての画素についてRの輝度を0としている(赤が抜ける) cv2.imshow("R=0",img) #別ウィンドウ"R=0"を開きimgを表示 cv2.waitKey(0) #キー入力待ち cv2.destroyAllWindows() #ウインドウを閉じる
実行結果
以下のサイトを参考にさせていただきました
Pythonの文法メモ > 【OpenCV】画像読み出しとサイズ・画素情報取得、切り抜き、貼り付け、チャネル操作