Pythonでいろいろやってみる

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

画像をセピア調にする

カラー画像をセピア調にします。セピア調に変換するにはいくつかアルゴリズムがあるようですが、ここでは赤(R)を強調し、青(B)を弱くすることでセピア調に変換します。

関連記事

画像をセピア色に変換する(グレースケール画像を赤く補正する)

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

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

f:id:T_A_T:20190226223525j:plain
coffee.jpg

コード

「赤を強くし、青を弱くする」とセピア調になるようです。ただし赤の輝度を大きくすると上限255を超える場合があるため、緑を弱く、青をもっと弱くすることで相対的に輝度を調整しています、

import cv2  #OpenCVのインポート

fname = "coffee.jpg" #画像ファイル名

img = cv2.imread(fname) #画像を読み出しオブジェクトimgに代入

#全画素についてB(青)の輝度を0.3倍、G(緑)の輝度を0.8倍、R(赤)の輝度はそのまま
img[:, :, 0] =img[:, :, 0] * 0.3
img[:, :, 1] =img[:, :, 1] * 0.8
img[:, :, 2] =img[:, :, 2] 

cv2.imshow("sepia",img) #別ウィンドウ"sepia"を開きimgを表示

cv2.waitKey(0) #キー入力待ち
cv2.destroyAllWindows() #ウインドウを閉じる

実行結果

f:id:T_A_T:20190306201035p:plain

ほかの画像でもやってみました

f:id:T_A_T:20190226223535j:plain f:id:T_A_T:20190306201712p:plain f:id:T_A_T:20190225222801j:plain f:id:T_A_T:20190306201723p:plain

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

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

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

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