Pythonでいろいろやってみる

Pythonを使った画像処理や機械学習などの簡単なプログラムを載せています。

画像の色味を変える

カラー画像からB(青)、G(緑)、R(赤)の輝度を個別に0にした画像を作ります。OpenCVで読み込んだカラー画像は 高さX幅X色(BGR) の3次元からなるndarrayに収められるので、[高さ全範囲、幅全範囲、色・青]=0のようにすることで決まった色を抜くことができます。

やること
  • ファイル名を指定して画像ファイルを読み出す
  • 画像の全画素の青の輝度を0にする
  • 画像を別ウィンドウで表示する
  • キー入力で表示用ウィンドウを破棄し終了
使った関数
  • cv2.imread : 画像ファイルの読み出し
  • cv2.imshow : 画像を別ウィンドウに表示する
環境
  • windows10 home
  • Anaconda 3/ jupyter notebook 5.6.0
  • Python 3.7.0
  • OpenCV 4.0.0
準備

画像ファイルはフリー写真素材ぱくたそからダウンロードさせていただき、ファイル名"donuts.jpg"で、jupyter notebookファイル(***.ipynb)と同じディレクトリに保存しました。

f:id:T_A_T:20190226223535j:plain
donuts.jpg

コード
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になった画像が表示されます f:id:T_A_T:20190306191405p:plain

コード

緑の画素を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() #ウインドウを閉じる
実行結果

f:id:T_A_T:20190306191659p:plain

コード

赤の画素を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() #ウインドウを閉じる

実行結果

f:id:T_A_T:20190306192058p:plain

以下のサイトを参考にさせていただきました

Pythonの文法メモ > 【OpenCV】画像読み出しとサイズ・画素情報取得、切り抜き、貼り付け、チャネル操作

ブログランキングに参加しています

にほんブログ村 IT技術ブログへ
にほんブログ村