Open CV中图像变换(一)

平移矩阵

矩阵中的每个像素由(x,y)组成,所谓的图像平移就是在矩阵上平移,横向平移就是给x加值,纵向平移在y上加值。

1.图像的缩放

API:cv2.resize(src,dst,dsize,fx,fy,interpolation)

        src:要缩放的图像

        dst:目的,在c++中,需要一个输出参数,在python中不需要这个,我们只需要用“=”赋值给目的图像。

        dsize:缩放的目标的大小

        fx,fy=分别是x轴和y轴的缩放因子。(dsize与fx,fy冲突,如我们定义了dsize,就不再需要fx,fy了,反之,亦然)

        interpolation:插值算法,参数有如下几种

                                INTER_NEAREST,邻近插值,速度快,效果差

                                INTER_LINEAR,双线性插值,利用原图中的四个点(默认)

                                INTER_CUBIC,三次插值,利用原图中的16个点

                                INTER_AREA,效果最好

算法原理https://blog.csdn.net/weixin_41466575/article/details/113058802

2.图像的翻转

        图像的翻转与图像旋转不同,旋转是转一定度数,翻转是上下翻转,左右翻转

API:cv2.filp(img,flipCode)

        flipCode==0,表示上下翻转

        flipCode>0,表示左右翻转

         flipCode<0,表示上下左右翻转

Open CV中图像变换(一)_第1张图片 上下翻转数据对比

Open CV中图像变换(一)_第2张图片 上下翻转


Open CV中图像变换(一)_第3张图片 图像左右翻转数据变化对比
Open CV中图像变换(一)_第4张图片 左右翻转

Open CV中图像变换(一)_第5张图片 上下左右之后的数据对比

Open CV中图像变换(一)_第6张图片 上下左右翻转

3.图像旋转

算法原理:https://zhuanlan.zhihu.com/p/109099445

API:cv2.rotate(img,rotateCode)    #  这个API无法旋转任意角度 

rotateCode参数值:

                                        ROTATE_90_CLOCKWISE(顺时针90°旋转)

                                        ROTATE_180(180°旋转)

                                        ROTATE_90_COUNTERCLOCKWISE(逆时针90°旋转)

Open CV中图像变换(一)_第7张图片 图片旋转90°数据对比

 Open CV中图像变换(一)_第8张图片

import cv2
import numpy as np


img = cv2.imread('d:\\download\\2.jpg')
img1 = cv2.resize(img, (600, 400))  # (宽,高),dsize是根据(X,Y),而img.shape输出的是(y,x)
img2 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
print('旋转之前的矩阵', np.array(img2))
# print('翻转之前的矩阵', np.array(img2))
# img3 = cv2.flip(img2, 0)  # 上下翻转
# img3 = cv2.flip(img2, 1)  # 左右翻转
# # img3 = cv2.flip(img2, -1)  # 上下左右翻转
# img3 = cv2.rotate(img2, cv2.ROTATE_90_CLOCKWISE)  # 顺时针旋转90°
img3 = cv2.rotate(img2, cv2.ROTATE_180)  # 旋转180°
# print('翻转之后的矩阵', np.array(img3))
print('旋转之后的矩阵', np.array(img3))
cv2.imshow('img2', img2)
cv2.imshow('img3', img3)

key = cv2.waitKey(0)
if key & 0xFF == ord('q'):
    cv2.destroyAllWindows()

你可能感兴趣的:(python-opencv,计算机视觉,人工智能)