五 图片的镜像
使用opencv 完成图像的镜像,有两种方法。
第一种方法:通过cv2.flip 完成,这种方法简单,速度也很快。
第二种方法:通过cv2.warpAffine完成,这种方法稍微复杂一些,速度也比cv2.flip 慢,但是有些图像处理场合需要用到。
图像X方向镜像:
方法一:
cv2.flip(image1,1)
方法二:
M = np.float32([[-1, 0, imgW], [0, 1, 0]])
XMirrorImg = cv2.warpAffine(image1, M, (imgW, imgH), borderValue=(155, 150, 200))
图像Y方向镜像:
方法一:
cv2.flip(image1,-1)
方法二:
M = np.float32([[1, 0, 0], [0, -1, imgH]])
YMirrorImg = cv2.warpAffine(image1, M, (imgW, imgH), borderValue=(155, 150, 200))
完整代码如下:
import cv2
import os,time,datetime
import numpy as np
from matplotlib import pyplot as plt
imagePath1 = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath("."))),"OpenCVLogo.PNG")
image1 = cv2.imread(imagePath1)
imgH,imgW=image1.shape[:2]
M = np.float32([[1, 0, 0], [0, -1, imgH]])
YMirrorImg = cv2.warpAffine(image1, M, (imgW, imgH), borderValue=(155, 150, 200))
M = np.float32([[-1, 0, imgW], [0, 1, 0]])
XMirrorImg = cv2.warpAffine(image1, M, (imgW, imgH), borderValue=(155, 150, 200))
YMirrorImg2 = cv2.flip(image1,-1)
XMirrorImg2 = cv2.flip(image1,1)
plt.subplot(231),plt.imshow(image1,'gray'),plt.title('ORIGINAL')
plt.subplot(232),plt.imshow(YMirrorImg,'gray'),plt.title('YMirrorImg')
plt.subplot(233),plt.imshow(XMirrorImg,'gray'),plt.title('XMirrorImg')
plt.subplot(234),plt.imshow(YMirrorImg2,'gray'),plt.title('YMirrorImg2')
plt.subplot(235),plt.imshow(XMirrorImg2,'gray'),plt.title('XMirrorImg2')
plt.show()
测试结果如下: