opencv 入门笔记五 padding(图像加边框)

1.传统艺能了,上代码:

cv.copyMakeBorder(src, top, bottom, left, right, borderType, dst=None, value=None)
    src:原图像
    top,bottom,left,right:边界宽度,单位:像素值(pixel)
    borderType:
         cv2.BORDER_CONSTANT, 带颜色的边界,需要传入另外一个颜色值
         cv.BORDER_REFLECT, 边缘元素的镜像反射做为边界
         cv2.BORDER_REFLECT_101/cv2.BORDER_DEFAULT
         cv.BORDER_REPLICATE, 边缘元素的复制做为边界
         cv.BORDER_WRAP
    dst: 输出,画布,尺寸为 (src.shape[1]+left+right, src.shape[0]+top+bottom)
    返回图像 dst 与原图像 src 内存地址不一样( 原图像 src 并没有被添加边框 ),一般不用dst而  用以下代码产生新图片
    value: borderType为cv2.BORDER_CONSTANT时,传入的Q边界颜色值,如[0,255,0]

2.当然了,可能有人会问图像加框有什么用呢?

当然有用!

在神经网络对图片进行特征提取/训练之前,一般要对图片进行预处理,不同尺寸的图片tensor大小不同,无法输入同一个特定神经网络进行训练,这时对图像进行缩放,padding,拼接就显得尤为重要了。

#!/usr/bin/python3
# coding:utf-8

import cv2 as cv

# 读取图像
img = cv.imread("/home/newj/图片/ima.jpeg")
print(img.shape)
# 显示原图
cv.imshow("test_window0", img)

img1 = cv.copyMakeBorder(img, 100, 100, 100, 100, cv.BORDER_CONSTANT, value=[0, 255, 0])
img2 = cv.copyMakeBorder(img, 100, 100, 100, 100, cv.BORDER_REFLECT)
img3 = cv.copyMakeBorder(img, 100, 100, 100, 100, cv.BORDER_REPLICATE)
img4 = cv.copyMakeBorder(img, 100, 100, 100, 100, cv.BORDER_WRAP)
cv.imshow("BORDER_CONSTANT", img1)
cv.imshow("BORDER_REFLECT", img2)
cv.imshow("BORDER_REPLICATE", img3)
cv.imshow("BORDER_WRAP", img4)

# 阻塞等待
key = cv.waitKey(0)

# 输入q,退出
if key == ord('q'):
    cv.destroyAllWindows()

 3.一般情况下,加纯色边框就够用了,但一些特殊场合还得用镜像等方式!

 4.最后,每天进步一点点!

你可能感兴趣的:(opencv学习笔记,opencv)