OpenCV(6)-实现图像基本变换

OpenCV实现图像基本变换

图像的放大与缩小

  • 图像缩放:resize(src,dst,dsize,fx,fy,interpolation)
    • fx:x轴的缩放因子
    • fy:y轴的缩放因子
    • interpolation:差值算法
      • INTER_NEAREST:邻近差值,速度快,效果差
      • INTER_LINEAR:默认,双线性差值,原图中的四个点,快,效果好
      • INTER_CUBIC:三次差值,原图中的16个点,较慢
      • INTER_AREA:效果最好,速度最慢
import cv2
import numpy as np

people = cv2.imread('1.png')
new = cv2.resize(people,None,fx=3.0,fy=3.0,interpolation=cv2.INTER_AREA)

cv2.imshow('people',people)
cv2.imshow('new',new)
cv2.waitKey(0)

图像翻转

  • flip(img,flipCode)
    • flipCode==0 上下翻转
    • flipCode>0 左右翻转
    • flipCode<0 上下+左右翻转
import cv2
import numpy as np

people = cv2.imread('1.png')
new = cv2.flip(people,-1)

cv2.imshow('people',people)
cv2.imshow('new',new)
cv2.waitKey(0)

图像旋转

  • rotate(img,retateCode)
    • ROTATE_90_CLOCKWISE 转90度
    • ROTATE_180 转180度
    • ROTATE_90_COUNTERCLOCKWISE 转270度
import cv2
import numpy as np

people = cv2.imread('1.png')
new = cv2.rotate(people,cv2.ROTATE_90_CLOCKWISE)

cv2.imshow('people',people)
cv2.imshow('new',new)
cv2.waitKey(0)

图像的仿射变换

  • 仿射变换是图像旋转、缩放、平移的总称

图像平移

  • warpAffine(src,M,dsize,flags,mode,value)
    • M:变换矩阵
    • dsize:变换后输出尺寸大小
    • flag:与resize中的差值算法一致
    • mode:边界外推法标志
    • value:填充边界的值
  • 矩阵中的每个元素由(x,y)组成
  • 因此,其变换矩阵是2*2的矩阵
  • 平移向量为2 * 1的向量,所在平移矩阵为 2 * 3的矩阵
import cv2
import numpy as np

people = cv2.imread('1.png')
h,w,ch = people.shape

M = np.float32([[1,0,50],[0,1,0]])

new = cv2.warpAffine(people,M,(w,h))
cv2.imshow('people',people)
cv2.imshow('new',new)

cv2.waitKey(0)

变换矩阵

  • getRotationMatrix2D(center,angle,scale)
    • 通过一点轴变换
    • center:中心点(x,y)
    • angle:角度(按照逆时针旋转)
    • scale:缩放比例
M = cv2.getRotationMatrix2D((w/2,h/2),30,1.5)
  • getAffineTransform(src[],dst[])
    • 通过三个点确定变换的位置
    • src原
    • dst目的
src = np.float32([[400,300],[800,300],[400,1000]])
dst = np.float32([[200,400],[600,500],[150,1100]])
M = cv2.getAffineTransform(src,dst)

透视变换

变换坐标系(可以将斜着的图片截取一部分并且变成正着)

  • warpPerspective(img,M,dsize,…)

    • M:变换矩阵
    • dsize:变换后输出尺寸大小
  • 获取变换矩阵:getPerspectiveTransform(src,dst)

    • 四个点
M = cv2.getPerspectiveTransform(src,dst)
new = cv2.warpPerspective(img,M,(2300,3000))

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