5
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

OpenCVで画像に余白を追加

Posted at

概要

PythonのOpenCVで画像に余白を追加するプログラムを作りました.
同じフォルダー内にある画像に対して一括で処理できます.

開発環境

  • Windows10
  • Python ver3.7.7
  • OpenCV ver3.4.1

コード

import cv2
import os
import glob
       

def main():
    BLUE = [255,0,0]
    img_files = glob.glob('*.png')

    for f in img_files:
        img = cv2.imread(f)
        fname, fext = os.path.splitext(f)

        height, width, channels = img.shape


        #画像の下に余白追加
        output = cv2.copyMakeBorder(img, 50, 50, 50, 50, cv2.BORDER_CONSTANT, value=BLUE)     
        cv2.imwrite(fname+"_blue_flame.png", output)

if __name__ == "__main__":
    main()

BLUEのかっこ内の数値はRGBの値を指定しており,数値を変えることで他の色も指定できます.このコードではcopyMakeBorderを使っており,元の画像の上下左右に青色を50ピクセル分追加します.
数値をいじることで追加する余白の量や,色を変更することができます.

出力される画像

入力した画像はこちらです.
sports_soccer_hiza_sliding.png
出力された画像はこちらです.
sports_soccer_hiza_sliding_blue_flame.png  

このように元画像に余白として青色が追加されています.
元の画像(いらすとや)の背景は透明なのですが,余白追加の処理をすると背景が黒くなっています.

背景が透明ではない画像(スキマナースの画像を使用)では,以下のように問題なく使用できます.
cut57_pizza-600x401.jpg cut57_pizza-600x401_blue_flame.png

#使い方
上に示すコードが記されたファイルと,余白を追加したい画像を同じフォルダーに入れて,コードを実行すればOK
フォルダーに入れた画像は一括で処理されます.
処理後は元の画像も残ります.
パスを指定すれば,別に同じフォルダーじゃなくてもOK
画像の拡張子に合わせて,コードを書き換える必要あり(今回はpngを指定).

#参考にしたサイト
OpenCV 画像上の基本的な処理 
http://labs.eecs.tottori-u.ac.jp/sd/Member/oyamada/OpenCV/html/py_tutorials/py_core/py_basic_ops/py_basic_ops.html
copyMakeBorderの機能についてより詳しく記述してあります.

[Python3.6]OpenCVで画像を4分割
https://qiita.com/kino15/items/56c0fffce4c14a875199
コードだけではなく,記事の書き方も参考にしてます.

5
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?