bordermMode 边界模式有如下几种:
cv2.BORDER_CONSTANT
添加常数值为边界值,还需要指定另外一个参数 borderValue
,borderValue默认值为(0, 0, 0),当然你可以指定其他值,三个元素分别表示 BGR(不是RGB,要注意哦)cv2.BORDER_REPLICATE
重复最后一个元素。例如: aaaaaa| abcdefgh|hhhhhhhcv2.BORDER_REFLECT
边界元素的镜像。比如: fedcba|abcdefgh|hgfedcbcv2.BORDER_REFLECT_101
/ cv2.BORDER_REFLECT101
/ cv2.BORDER_DEFAULT
这三个效果一样,例如: gfedcb|abcdefgh|gfedcbacv2.BORDER_WRAP
重复图片: cdefgh| abcdefgh|abcdefgcv.BORDER_TRANSPARENT
原图像该位置的像素值下面,我们应用在 图像的仿射变换,指定边界模式参数,看看实际效果如何
import cv2
src_img = cv2.imread('./LenaRGB.bmp')
rows, cols = src_img.shape[:2]
m = cv2.getRotationMatrix2D((cols/2, rows/2), 45, 0.6)
dst_img = cv2.warpAffine(src_img, m, (cols, rows), borderMode=cv2.BORDER_CONSTANT, borderValue=(123, 200, 100))
cv2.imshow('src_img', src_img)
cv2.imshow('BORDER_CONSTANT', dst_img)
cv2.waitKey()
cv2.destroyAllWindows()
上面我们指定了 边界方式为 cv2.BORDER_CONSTANT
,填充值(borderValue)为(123, 200, 100)
下面我们依次替换 边界方式的参数值,得到如下效果:(图像标题对应其 边界模式)
官方文档地址:https://docs.opencv.org/4.0.0/d2/de8/group__core__array.html#gga209f2f4869e304c82d07739337eae7c5a886a5eb6b466854d63f9e742d5c8eefe