画像の一部分を拡大する
画像の一部分を拡大します。画像を縦に3つに分割し、真ん中を縦に1.5倍に拡大し、3つの画像を一つに連結することで画像の一部を拡大します。
使った関数・メソッド
- cv2.imread() : 画像ファイルの読み出し
- cv2.resize() : 画像サイズの変更
- cv2.imwrite() : 画像を保存する
環境
準備
画像ファイルはフリー写真素材ぱくたそからダウンロードさせていただき、ファイル名'santa_girl.jpg'でjupyter notebookファイル(***.ipynb)と同じディレクトリに保存しました。座像サイズは幅400px高さ560pxです。
santa_girl.jpg
コード
import cv2 # OpenCVのインポート img = cv2.imread('santa_girl.jpg') # 画像の読み出し img_1 = img[:350:,:].copy() # 画像のy0~349までをimg_1にコピー img_2 = img[350:450,:,:].copy() # 画像のy350~449までをimg_2にコピー img_3 = img[450:,:,:].copy() # 画像のy450~559までをimg_3にコピー img_2_long = cv2.resize(img_2,dsize = None,fx = 1.0,fy = 1.5) # img_2のサイズを縦に1.5倍に img_long = cv2.vconcat([img_1,img_2_long,img_3])# 3つの画像を縦に連結 cv2.imwrite('santa_girl_long.jpg',img_long) # 画像の保存
実行結果
指定部分が拡大された画像が保存されます。画像サイズは幅400px高さ610pxに変わっています。
縮小をやってみます。キリンの首を短くします。
import cv2 # OpenCVのインポート img = cv2.imread('kirin.jpg') # 画像の読み出し img_1 = img[:160:,:].copy() # 画像のy0~159までをimg_1にコピー img_2 = img[160:300,:,:].copy() # 画像のy160~299までをimg_2にコピー img_3 = img[300:,:,:].copy() # 画像のy300~599までをimg_3にコピー img_2_short = cv2.resize(img_2,dsize = None,fx = 1.0,fy = 0.5) # img_2のサイズを縦に0.5倍に img_short = cv2.vconcat([img_1,img_2_short,img_3])# 3つの画像を縦に連結 cv2.imwrite('kirin_short.jpg',img_short) # 画像の保存
元画像 (幅400px高さ600px) 。フリー写真素材ぱくたそより入手
kirin.jpg
縮小後 (幅400px高さ530px)
以下のサイトを参考にさせていただきました
Pythonの文法メモ > 【OpenCV】画像読み出しとサイズ・画素情報取得、切り抜き、貼り付け、チャネル操作
Pythonの文法メモ > 【OpenCV】画像の連結
Pythonの文法メモ > 【OpenCV】画像サイズを変更するresize