0
3

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 1 year has passed since last update.

[画像処理] 画像に枠線を付ける

Last updated at Posted at 2022-06-04

はじめに

画像に枠線を付ける方法を整理します。

やりたいこと

下記のように単純に画像に枠線を付けることです。
image.png

用途ですが、画像の中の物体の輪郭を取るとき、白い枠線があると上手く行くケースがあります。

方式

Numpyのスライスを使います。

例えば、(128, 128, 3)サイズの画像があって、一番下の部分に幅10pxの白いラインを書きたいとします。
すると下記のようなコードになります。


img[128 - 10 : 128 , : , : ] = 255

チャンネルごとに値を入れることをお勧めします。
この方式だとカラーの枠線を入れることが可能です。OpenCVで画像を開いた場合、チャンネル順序が(B,G,R)になっていることには注意してください。


img[128 - 10 : 128 , : , : ] = [255, 255, 255]

このような処理を4辺に繰り返し行います。
draw_white_edge()の関数を使います。

引数として、下記の二つを指定します。

band_width : 枠線の幅、単位はピクセル
color : [B,G,R] 範囲 0~255 整数 

全体コード

簡単ですね。コードを掲示します。

import cv2


def draw_white_edge(img, band_width=10, color = [255, 255, 255]):
    # Image is aligned in BGR order.
    # color or Gray Scale
    if len(img.shape) < 3:  # gray scale
        img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
    else:
        pass

    # Check the image size
    height, width, channel = img.shape[0], img.shape[1], img.shape[2]

    # Image copy
    img_test = img.copy()

    # Image process
    # 1. bottom line
    img_test[height - band_width:height, :, :] = color
    # 2. top line
    img_test[0: band_width, :, :] = color
    # 3. left line
    img_test[:, 0:band_width, :] = color
    # 4. right line
    img_test[:, width - band_width:width, :] = color

    return img_test


def main():
    print('Welcome to my program!')
    img_array = cv2.imread('./images/apple.jpg')

    img_result = draw_white_edge(img=img_array, band_width= 50, color= [255, 0, 255])
    cv2.imshow('original', img_array)
    cv2.imshow('result', img_result)
    cv2.waitKey(0)


if __name__ == '__main__':
    main()


#結果

image.png

0
3
1

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
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?