opencv 对图片的操作

1.图片镜像旋转(cv2.flip())

图像的旋转是围绕一个特定点进行的,而图像的镜像旋转则是围绕坐标轴进行的。图像的镜像旋转分为水平翻转、垂直翻转、水平垂直翻转三种。

水平翻转就是将图片的像素点沿y轴翻转,具体到像素点来说就是令其坐标从(x,y)翻转为(-x,y)。

垂直翻转就是将图片的像素点沿x轴翻转,具体到像素点来说就是其坐标从(x,y)翻转为(x,-y)

水平垂直翻转就是水平翻转和垂直翻转的结合,具体到像素点来说就是其坐标从(x,y)翻转为(-x,-y)。用公式表示为:
在这里插入图片描述

由图像的旋转我们知道,图像在旋转的时候需要有旋转中心,而图像的镜像旋转虽然都是围绕x轴和y轴进行旋转,但是我们也需要确定x轴和y轴的坐标。在OpenCV中,图片的镜像旋转是以图像的中心为原点进行镜像翻转的。也就是说,水平翻转时,图像的左侧和右侧会关于中心点进行交换,垂直翻转时,图像的上侧和下侧会关于中心点进行交换。
代码格式如下:

cv2.flip(img,flipcode)

参数如下:

  • img:要旋转的图
  • flipcode:沿着哪个轴旋转

在本实验中,图片镜像旋转组件里的参数flipcode有三个选择:

  • 0:垂直翻转
  • 大于0:水平翻转
  • 小于0:水平垂直翻转
    代码如下:
    '''图片的镜像旋转'''
    img=cv2.imread(f'../15day4.10/src/1.jpg')
    #图像垂直镜像旋转
    img_v=cv2.flip(img,0)
     #图像水平镜像旋转
    img_h=cv2.flip(img,1)
     #图像水平垂直镜像旋转
    img_vh=cv2.flip(img,-1)
    cv2.imshow("img",img)
    cv2.imshow("imgv",img_v)
    cv2.imshow("imgh",img_h)
    cv2.imshow("imgvh",img_vh)
    cv2.waitKey(0) 

在这里插入图片描述

2 图像的矫正

而OpenCV里也提供了getPerspectiveTransform()函数用来生成该3*3的透视变换矩阵。

getPerspectiveTransform(src,dst)

在该函数中,需要提供两个参数:

src:原图像上需要进行透视变化的四个点的坐标,这四个点用于定义一个原图中的四边形区域。

dst:透视变换后,src的四个点在新目标图像的四个新坐标。

该函数会返回一个透视变换矩阵,得到透视变化矩阵之后,使用warpPerspective()函数即可进行透视变化计算,并得到新的图像。该函

cv2.warpPerspective(src, M, dsize, flags, borderMode)

数需要提供如下参数:

src:输入图像。

M:透视变换矩阵。这个矩阵可以通过getPerspectiveTransform函数计算得到。

dsize:输出图像的大小。它可以是一个Size对象,也可以是一个二元组。视口

flags:插值方法的标记。

borderMode:边界填充的模式。
代码如下:

'''图像的矫正-'''
    img=cv2.imread(r"../15day4.10/src/3.png")
    h,w,c=img.shape
    pts1=np.float32(([178,100],[487,134],[124,267],[473,308]))# 原图像里面想要内容四个角的坐标
    pts2=np.float32(([0,0],[w,0],[0,h],[w,h])) #透视变换后在二维的坐标
    #获取透视变换矩阵
    m=cv2.getPerspectiveTransform(pts1,pts2)
    # 获取变换后的图像
    img2=cv2.warpPerspective(img,M=m,dsize=(w,h))
    cv2.imshow("img",img)
    cv2.imshow("img2",img2)
    cv2.waitKey(0) 

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值