まず最初に、copyMakeBorder関数の構文を見てみましょう。
dst = cv2.copyMakeBorder(src, top, bottom, left, right, borderType[, dst, value])
src
: 入力画像top
: 上部の境界拡張のサイズbottom
: 下部の境界拡張のサイズleft
: 左側の境界拡張のサイズright
: 右側の境界拡張のサイズborderType
: 境界のタイプを指定する定数dst
: 出力画像(オプション)value
: 境界領域の値(オプション)
境界のタイプ(borderType
)には、以下の定数が使用されます:
cv2.BORDER_CONSTANT
: 一定の値で境界を埋めます。cv2.BORDER_REPLICATE
: 画像の端のピクセル値を境界にコピーします。cv2.BORDER_REFLECT
: 画像を反転させ、反転した部分を境界にコピーします。cv2.BORDER_WRAP
: 画像を反転させ、反転した部分を繰り返し境界にコピーします。
以下に、いくつかの具体的な例を示します。
例1: 一定の値で境界を埋める
import cv2
import numpy as np
image = cv2.imread("input_image.jpg")
border_color = (0, 0, 255) # Blue color
# 上下左右に10ピクセルずつ境界を拡張する
border_width = 10
# BORDER_CONSTANTを使用して、一定の値で境界を埋める
image_with_border = cv2.copyMakeBorder(image, border_width, border_width, border_width, border_width, cv2.BORDER_CONSTANT, value=border_color)
cv2.imshow("Image with Border", image_with_border)
cv2.waitKey(0)
cv2.destroyAllWindows()
例2: 画像の端のピクセル値を境界にコピーする
import cv2
import numpy as np
image = cv2.imread("input_image.jpg")
# 上下左右に10ピクセルずつ境界を拡張する
border_width = 10
# BORDER_REPLICATEを使用して、画像の端のピクセル値を境界にコピーする
image_with_border = cv2.copyMakeBorder(image, border_width, border_width, border_width, border_width, cv2.BORDER_REPLICATE)
cv2.imshow("Image with Border", image_with_border)
cv2.waitKey(0)
cv2.destroyAllWindows()
以上のように、copyMakeBorder関数を使用することで、画像の境界を拡張することができます。境界のタイプやサイズを調整することで、さまざまな効果を得ることができます。これにより、画像処理タスクやコンピュータビジョンのアプリケーションで有用な機能を実現できます。