OpenCV的函数flip()可以实现图像沿x轴翻转、沿y轴翻转、同时沿x轴和y轴翻转,从而实现图像的水平镜像和垂直镜像。
def flip(src: UMat, flipCode: int, dst: UMat | None = ...) -> UMat: ...
函数使用示例方案如下:
- flipCode =0,垂直翻转图像,是源图像的top-left(左上)和bottom-left(左下)的交换,也就是说左上变成了左下,左下变成了左上,这是一个典型在的 Microsoft Windows操作系统里的视频处理操作。
- flipCode > 0,图像的水平翻转,随后的水平位移和绝对方差计算,是为了检查图像是否y轴对称。
- (flipCode < 0),图像同时垂直翻转和水平翻转,是为了以后的位移和绝对方差计算去检查图像是否是中心对称。
- 反转点阵队列的顺序(flipCode > 0 或flipCode == 0).
一、沿x轴翻转(垂直翻转)
import cv2
img1 = cv2.imread("./1-1.jpg", cv2.IMREAD_UNCHANGED)
img2 = cv2.flip(img1, 0)
cv2.imshow("img-1", img1)
cv2.imshow("img-2", img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
二、沿y轴翻转(水平翻转)
import cv2
img1 = cv2.imread("./1-1.jpg", cv2.IMREAD_UNCHANGED)
img2 = cv2.flip(img1, 1)
cv2.imshow("img-1", img1)
cv2.imshow("img-2", img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
三、同时垂直和水平翻转
import cv2
img1 = cv2.imread("./1-1.jpg", cv2.IMREAD_UNCHANGED)
img2 = cv2.flip(img1, -1)
cv2.imshow("img-1", img1)
cv2.imshow("img-2", img2)
cv2.waitKey(0)
cv2.destroyAllWindows()