Pythonでいろいろやってみる

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

画像をチャンネル別(青、緑、赤)に表示する

カラー画像を青、緑、赤各チャンネルの輝度に分けて表示します。 元画像と各チャンネルの画像を連結して一枚の画像にして保存します。

f:id:T_A_T:20190414122047p:plain

関連記事
航空写真の画素B(青)G(緑)R(赤)平均値を求め棒グラフにする
画像のヒストグラムを比較する

使った関数・メソッド
  • cv2.imread() : 画像ファイルの読み出し
  • copy() : リストのコピー
  • cv2.vconcat() : 画像を縦に連結
  • cv2.hconcat() : 画像を横に連結
  • cv2.imwrite() : 画像を保存する
環境
  • windows10 home
  • Anaconda 3/ jupyter notebook 5.6.0
  • Python 3.7.0
  • OpenCV 4.0.0
準備

画像ファイルはフリー写真素材ぱくたそからダウンロードさせていただき、ファイル名'cat_boss.jpg'で、jupyter notebookファイル(***.ipynb)と同じディレクトリに保存しました。 f:id:T_A_T:20190414112018j:plain
rose.jpg
f:id:T_A_T:20190414111923j:plain hydrangea.jpg

コード
import cv2  # OpenCVのインポート

img = cv2.imread('rose.jpg')  # 画像の読み出し

img_b = img.copy()  # 画像オブジェクトのコピー
img_g = img.copy()  # 画像オブジェクトのコピー
img_r = img.copy()  # 画像オブジェクトのコピー

img_b[:, :, (1, 2)] = 0  # g(緑)、r(赤)の輝度を0に
img_g[:, :, (0, 2)] = 0  # b(青)、r(赤)の輝度を0に
img_r[:, :, (0, 1)] = 0  # b(青)、g(緑)の輝度を0に

img_half = cv2.resize(img,dsize=None,fx=0.5,fy=0.5) # imgのサイズを半分に
img_b_half = cv2.resize(img,dsize=None,fx=0.5,fy=0.5) # img_bのサイズを半分に
img_g_half = cv2.resize(img,dsize=None,fx=0.5,fy=0.5) # img_gのサイズを半分に
img_r_half = cv2.resize(img,dsize=None,fx=0.5,fy=0.5) # img_rのサイズを半分に

# 画像の連結
img_marged = cv2.vconcat([cv2.hconcat([img, img_b]),cv2.hconcat([img_g, img_r])])

cv2.imwrite('rose.jpg',img_marged)  # 画像の保存

実行結果

f:id:T_A_T:20190414112135j:plain
f:id:T_A_T:20190414112209j:plain

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

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

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

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