一个练习的代码,先对图片进行缩放,然后再做镜像:
import cv2
import numpy as np
img = cv2.imread("src.jpg", 1)
cv2.imshow("src",img)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
deep = imgInfo[2]
#图片大,镜像后太高屏幕显示不全,这里先缩放
matScale = np.float32([[0.8,0,0], [0,0.8,0]])
scale = cv2.warpAffine(img, matScale, (int(width*0.8), int(height*0.8)))
cv2.imshow("scale", scale)
#重新获取缩放后的图片高与宽
imgInfo = scale.shape
height = imgInfo[0]
width = imgInfo[1]
#镜像的图片信息
newImgInfo = (height * 2, width, deep)
dest = np.zeros(newImgInfo, np.uint8)
#镜像
for i in range(0, height):
for j in range(0, width):
dest[i,j] = scale[i,j]
dest[height*2 - i -1, j] = scale[i, j]
#画一个镜像与原图分割线
for i in range(0, width):
dest[height, i] = (0,0,255)
cv2.imshow("dst", dest)
cv2.waitKey(0)
三张图片效果如下: