opencv3+python3完成图片镜像实现
1、镜像操作有三种:假设原图在第一象限
1) 绕y轴 实现于第二象限
2) 绕y再x 实现于第三象限
3)绕X实现于第四象限

2、opencv函数flip实现上述功能:
flip(src, flipCode)
src – 源图像
flipCode – 镜像模式:
flipCode==0垂直镜像(沿X轴);
flipCode>0水平镜像(沿Y轴);
flipCode<0水平垂直镜像(先沿X轴,再沿Y轴,等价于旋转180°)

3、水平镜像代码如下:
#镜像import cv2 as cvimport numpy as npfrom matplotlib import pyplot as pltfrom matplotlib.font_manager import FontPropertiesplt.rcParams['font.family'] = ['sans-serif']plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签plt.rcParams['axes.unicode_minus']=False #用来正常显示负号font = FontProperties(fname='/System/Library/Fonts/STHeiti Light.ttc', size=16)img = cv.imread('c:\\meiping1.png',1)rows,cols, channel = img.shape# 水平镜像plt.subplot(1,2,1),plt.imshow(img)plt.subplot(1,2,2),plt.imshow(cv.flip(img, 2))# cv.imshow('dest', dest)plt.title("水平镜像")plt.xticks([]),plt.yticks([])plt.show()


4、垂直镜像代码如下:
plt.subplot(1,2,1),plt.imshow(img)plt.subplot(1,2,2),plt.imshow(cv.flip(img, 0))# cv.imshow('dest', dest)plt.title("垂直镜像")plt.xticks([]),plt.yticks([])plt.show()


5、对称四象限代码:
#对称四图!plt.subplot(2,2,1),plt.imshow(img)plt.subplot(2,2,2),plt.imshow(cv.flip(img, 1))plt.subplot(2,2,3),plt.imshow(cv.flip(img, 0))plt.subplot(2,2,4),plt.imshow(cv.flip(img, -3))# plt.xticks([]),plt.yticks([])plt.show()


6、完整代码:
#镜像
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
from matplotlib.font_manager import FontProperties
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
font = FontProperties(fname='/System/Library/Fonts/STHeiti Light.ttc', size=16)
img = cv.imread('c:\\meiping1.png',1)
rows,cols, channel = img.shape
# 水平镜像
plt.subplot(1,2,1),plt.imshow(img)
plt.subplot(1,2,2),plt.imshow(cv.flip(img, 2))
# cv.imshow('dest', dest)
plt.title("水平镜像")
plt.xticks([]),plt.yticks([])
plt.show()
plt.subplot(1,2,1),plt.imshow(img)
plt.subplot(1,2,2),plt.imshow(cv.flip(img, 0))
# cv.imshow('dest', dest)
plt.title("垂直镜像")
plt.xticks([]),plt.yticks([])
plt.show()
#对称四图!
plt.subplot(2,2,1),plt.imshow(img)
plt.subplot(2,2,2),plt.imshow(cv.flip(img, 1))
plt.subplot(2,2,3),plt.imshow(cv.flip(img, 0))
plt.subplot(2,2,4),plt.imshow(cv.flip(img, -3))
# plt.xticks([]),plt.yticks([])
plt.show()