边界填充

复制法

# 读取图片
img = cv2.imread("sqh.png")

# 填充像素
top_size = 50
bottom_size = 50
left_size = 50
right_size = 50

# Replicate (复制法)
replicate = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_REPLICATE)
cv2.imshow("replicate", replicate)
cv2.waitKey(0)
cv2.destroyAllWindows()
上面原图,下面是操作后的图

  • img: 需要填充的图像
  • top: 上边界填充像素
  • bottom: 下边界填充像素
  • left: 左边界填充像素
  • right: 右边界填充像素
  • borderType: 图像填充的方法

 

 

 

 

 

 

 

 

 

反射法  对图像边缘像素进行反射.

reflect = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv2.BORDER_REFLECT)

 

外包法 用相反位置对图片进行包裹.

wrap = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv2.BORDER_WRAP)

 

常量法  用常数值填充. 需要设置一个 value 值,代表填充的颜色

constant = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv2.BORDER_CONSTANT, value=0)

 

 

图像裁剪融合

cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])

 

  • src: 需要裁剪的图片
  • dsize: 裁剪的大小
  • fx: x 轴比例
  • fy: y 轴比例
# 读取数据
photo = cv2.imread("sqh.png")

# 拉伸比例1:3
photo_resize = cv2.resize(dog, (0, 0), fx=1, fy=3)
cv2.imshow("photo", photo_resize)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

图像融合

cv2.addWeighted可以帮助我们融合两张图片

import cv2
# 读取数据
# 读取数据
cat = cv2.imread("cat.png")
dog = cv2.imread("dog.png")

# 输出维度
print(cat.shape)
print(dog.shape)

# 裁剪大小
dog = cv2.resize(dog, (640, 554))
cat = cv2.resize(cat, (640, 554))
print(dog.shape) # (554, 640, 3)
print(cat.shape) # (554, 640, 3)

# 图像融合
res = cv2.addWeighted(dog, 0.5, cat, 0.5, 0)
cv2.imshow("res", res)
cv2.waitKey(0)
cv2.destroyAllWindows()

要注意的是使用函数时候确保2个图片的 大小要一样

 

posted on 2021-08-17 16:27  柯西SAMA  阅读(467)  评论(0)    收藏  举报