参考:https://blog.csdn.net/qq878594585/article/details/81838260
函数原型
cv2.warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]]) → dst
应用举例
output = cv2.warpAffine(
image,
matrix[:2, :],
dsize = (image.shape[1], image.shape[0]),
flags = params.cvInterpolation(),
borderMode = params.cvBorderMode(),
borderValue = params.cval,
)
src: 输入图像
M: 变换矩阵,反映平移或旋转的关系,为inputArray类型的2x3的变换矩阵
dsize:输出图像的大小
flags:插值方法, 有
cv2.INTER_LINEAR,双线性插值(为默认设置)
cv2.INTER_NEAREST,最近邻插值
cv2.INTER_CUBIC, 样条插值,4x4像素邻域的双三次插值
cv2.INTER_AREA:区域插值,v使用像素区域关系进行重采样
cv2.INTER_LANCZOS4,lanczoc插值,8x8邻域的lanczoc插值
borderMode: 边界像素模式
borderbValue:重点,边界填充值,默认情况下,它为0
日常进行放射变换时,在只设置前3个参数的情况下,如 cv2.warpAffine(img,M,(rows,cols))可以实现基本的仿射变换效果,但可以出现“黑边”现象,如图:
这对后续的处理往往造成很大的困扰,参数borderbValue可以选择填充的颜色,默认为黑色,比如可以设定边界区域填充为白色
cv2.warpAffine(img,M,(lengh,lengh),borderValue=(255,255,255))
效果图: