画像をチャンネル別(青、緑、赤)に表示する
カラー画像を青、緑、赤各チャンネルの輝度に分けて表示します。 元画像と各チャンネルの画像を連結して一枚の画像にして保存します。
関連記事
航空写真の画素B(青)G(緑)R(赤)平均値を求め棒グラフにする
画像のヒストグラムを比較する
使った関数・メソッド
- cv2.imread() : 画像ファイルの読み出し
- copy() : リストのコピー
- cv2.vconcat() : 画像を縦に連結
- cv2.hconcat() : 画像を横に連結
- cv2.imwrite() : 画像を保存する
環境
準備
画像ファイルはフリー写真素材ぱくたそからダウンロードさせていただき、ファイル名'cat_boss.jpg'で、jupyter notebookファイル(***.ipynb)と同じディレクトリに保存しました。
rose.jpg
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) # 画像の保存
実行結果
以下のサイトを参考にさせていただきました
Pythonの文法メモ > 【OpenCV】画像読み出しとサイズ・画素情報取得、切り抜き、貼り付け、チャネル操作
Pythonの文法メモ > 【OpenCV】画像の連結