分享

python+opencv图像处理(十一)

 pythonjava学习 2021-04-06
图像镜像
图像的镜像指的是将图像以某条线为中心进行镜像对换。
图像的镜像根据翻转的方向可分为水平镜像翻转、垂直镜像翻转和对角镜像翻转3种。
水平镜像翻转指的是将图像以y轴为中心进行左右镜像对换。
垂直镜像翻转指的是将图像经x轴进行上下镜像对换。
对角镜像翻转指的将图像以图像水平中轴线和垂直中轴线的交点为中心进行镜像对换,也可以看做是以图像对角线为中心进行的镜像对换。
1、flip函数进行镜像翻转
可以用opencvflip函数实现图像的镜像。
如下图所示,左图为原图,右图为水平镜像后的图。

其代码如下:
import numpy as np
import cv2
img = cv2.imread("E:/image/le.jpg")
cv2.imshow("yuan", img)
img1 = cv2.flip(img,1)  #镜像
'''
参数1为要实现镜像的图像。
参数2 必选参数。用于指定镜像翻转的类型,其中0表示绕×轴正直翻转,即垂直镜像翻转;1表示绕y轴翻转,即水平镜像翻转;-1表示绕×轴、y轴两个轴翻转,即对角镜像翻转。
参数3 可选参数。用于设置输出数组,即镜像翻转后的图像数据,默认为与输入图像数组大小和类型都相同的数组。
'''
cv2.imshow('dst',img1)
cv2.waitKey(0)
以下为lena的垂直翻转和对角翻转,即flip的第二个参数改为0-1时的结果图。

2、自写代码实现镜像翻转

也可以不用opencv的函数,自已写代码实现图像的镜像,并可实现自己想要的操作。
如下图所示,完成了图像的水平镜像,并将原图和镜像的图放在同一张图片中。

其代码如下:
import cv2
import numpy as np
img = cv2.imread('E:/image/le.jpg')
height,width,deep= img.shape
dst = np.zeros([height, width*2, deep], np.uint8)
for i in range( height ):
    for j in range( width ):
        dst[i,j] = img[i,j]
        dst[i,width*2-j-1] = img[i,j]
cv2.imshow('image', dst)
cv2.waitKey(0)

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多