# ex2tron's blog:
# http://ex2tron.wang

import cv2
import numpy as np

img = cv2.imread('6_by_6.bmp', 0)
print(img)
# 结果应该如下：
# [[213 166 237 240 196 243]
#  [166  81 213 181  34 197]
#  [237 217 247 240 196 243]
#  [245 200 241 241 199 240]
#  [200  38 190 189  35 197]
#  [241 185 237 240 189 241]]

# 固定值边框：zero padding
cons = cv2.copyMakeBorder(img, 1, 1, 1, 1, cv2.BORDER_CONSTANT, value=0)
print(cons)
# 结果应该如下：
# [[0   0   0   0   0   0   0   0]
#  [0 213 166 237 240 196 243   0]
#  [0 166  81 213 181  34 197   0]
#  [0 237 217 247 240 196 243   0]
#  [0 245 200 241 241 199 240   0]
#  [0 200  38 190 189  35 197   0]
#  [0 241 185 237 240 189 241   0]
#  [0   0   0   0   0   0   0   0]]

# 默认边框类型
default = cv2.copyMakeBorder(img, 1, 1, 1, 1, cv2.BORDER_DEFAULT)
print(default)
# 结果应该如下：
# [[ 81 166  81 213 181  34 197  34]
#  [166 213 166 237 240 196 243 196]
#  [ 81 166  81 213 181  34 197  34]
#  [217 237 217 247 240 196 243 196]
#  [200 245 200 241 241 199 240 199]
#  [ 38 200  38 190 189  35 197  35]
#  [185 241 185 237 240 189 241 189]
#  [ 38 200  38 190 189  35 197  35]]


img = cv2.imread('lena.jpg')

# 定义卷积核
kernel = np.ones((3, 3), np.float32) / 10
# 卷积操作，-1表示通道数与原图相同
dst = cv2.filter2D(img, -1, kernel)

hs = np.hstack((img, dst))
cv2.imshow('res', hs)
cv2.waitKey(0)
