画像をセピア調にする
カラー画像をセピア調にします。セピア調に変換するにはいくつかアルゴリズムがあるようですが、ここでは赤(R)を強調し、青(B)を弱くすることでセピア調に変換します。
関連記事
画像をセピア色に変換する(グレースケール画像を赤く補正する)
やること
- ファイル名を指定して画像ファイルを読み出す
- 画像をセピア調に変換し別ウィンドウで表示する
- キー入力で表示用ウィンドウを破棄し終了
使った関数
- cv2.imread : 画像ファイルの読み出し
- cv2.imshow : 画像を別ウィンドウに表示する
環境
準備
画像ファイルはフリー写真素材ぱくたそからダウンロードさせていただき、ファイル名"coffee.jpg"で、jupyter notebookファイル(***.ipynb)と同じディレクトリに保存しました。
コード
「赤を強くし、青を弱くする」とセピア調になるようです。ただし赤の輝度を大きくすると上限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() #ウインドウを閉じる
実行結果
ほかの画像でもやってみました
以下のサイトを参考にさせていただきました
Pythonの文法メモ > 【OpenCV】画像読み出しとサイズ・画素情報取得、切り抜き、貼り付け、チャネル操作