Pythonでいろいろやってみる

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

画像の一部分を拡大する

画像の一部分を拡大します。画像を縦に3つに分割し、真ん中を縦に1.5倍に拡大し、3つの画像を一つに連結することで画像の一部を拡大します。
f:id:T_A_T:20190421082958p:plain

使った関数・メソッド
  • cv2.imread() : 画像ファイルの読み出し
  • cv2.resize() : 画像サイズの変更
  • cv2.imwrite() : 画像を保存する
環境
  • windows10 home
  • Anaconda 3/ jupyter notebook 5.6.0
  • Python 3.7.0
  • OpenCV 4.0.0
準備

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

f:id:T_A_T:20190421075541j:plain
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に変わっています。
f:id:T_A_T:20190421075808j:plain


縮小をやってみます。キリンの首を短くします。

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) 。フリー写真素材ぱくたそより入手
f:id:T_A_T:20190421095002j:plain
kirin.jpg

縮小後 (幅400px高さ530px)
f:id:T_A_T:20190421095057j:plain

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

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

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

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