OpenCV图像变换

一 图像的缩放

resize(src,dst,dsize,fx,fy,interpolation)

fx:x轴的缩放因子

fy:y轴的缩放因子

interpolation 插值算法

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

INTER_LINEAR,双线性插值,原图中的4个点

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

INTER_AREA 效果最好

cpp 复制代码
import cv2
import numpy as np

girl=cv2.imread('./2037548.jpg')

new=cv2.resize(girl,(800,600))

cv2.imshow('scale',new)

cv2.waitKey(0)

二 图像翻转

cpp 复制代码
flip(img,flipCode)
flipCode==0 上下
flipCode>0 左右
flipCode<0 上下+左右
cpp 复制代码
import cv2
import numpy as np

girl=cv2.imread('./2037551.jpg')

new=cv2.flip(girl,0)

cv2.imshow('girl',new)

cv2.waitKey(0)

三 图像旋转

cpp 复制代码
rotate(img,rotateCode)
ROTATE_90_CLOCKWISE)
ROTATE_180
ROTATE_90_COUNTERCLOCKWISE
cpp 复制代码
import cv2
import numpy as np

girl=cv2.imread('./2037551.jpg')

new =cv2.rotate(girl,cv2.ROTATE_90_CLOCKWISE)

cv2.imshow('girl',new)

cv2.waitKey(0)

四 仿射变换之图像平移

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

1 仿射API

cpp 复制代码
warpAffine(src,M,dsie,flags,mode,value)
M:变换矩阵
dsize输出尺寸大小
flag:与resize中插值算法一致
Mode:边界外推法标志
value:填充边界的值

2 平移矩阵

矩阵中的每个像素由(x,y)组成。

因此,其变换矩阵是2X2的矩阵。

平移向量为2x1的向量,所在平移矩阵为2x3矩阵。

cpp 复制代码
import cv2
import numpy as np

girl=cv2.imread('./2037551.jpg')
M=np.float32([[1,0,100],[0,1,100]])
h,w,ch=girl.shape

new=cv2.warpAffine(girl,M,(w,h))

cv2.imshow('girl',girl)
cv2.imshow('newgirl',new)
cv2.waitKey(0)

五 仿射变换之获取变换矩阵

cpp 复制代码
getRotationMatrix2D(center,angle,scale)
center中心点
angle角度
scale缩放比例
cpp 复制代码
import cv2
import numpy as np

girl=cv2.imread('./2037551.jpg')
h,w,ch=girl.shape
# 旋转的角度为逆时针
# 中心点(x,y)
M=cv2.getRotationMatrix2D((w/2,h/2),15,1.0)
# 如果想改变新图形的尺寸,需要修改dsize
new=cv2.warpAffine(girl,M,(int(w/2),int(h/2)))

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

六 仿射变化之变换矩阵之二

变换矩阵(二)

cpp 复制代码
getAffineTransform(src[],dst[])
通过三个点可以确定变换的位置
cpp 复制代码
import cv2
import numpy as np

girl=cv2.imread('./2037551.jpg')
h,w,ch=girl.shape
src=np.float32([[400,300],[800,300],[400,1000]])
dst=np.float32([[200,400],[600,500],[150,1100]])
M=cv2.getAffineTransform(src,dst)

new=cv2.warpAffine(girl,M,(w,h))

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

七 OpenCV透视变换

透视变换API

cpp 复制代码
warpPerspective(img,M,dsize,..)
M是边变换矩阵
dsize是目标图像大小
cpp 复制代码
getPersectiveTransform(src,dst)
四个点(图形的四个角)
cpp 复制代码
import cv2
import numpy as np

img=cv2.imread('./2037551.jpg')
src=np.float32([[100,1100],[2100,1100],[0,400],[2500,2900]])
dst=np.float32([[0,0],[2300,0],[0,3000],[2300,3000]])
M=cv2.getPerspectiveTransform(src,dst)
cv2.warpPerspective(img,M,(2300,3000))

new=cv2.warpPerspective(img,M,(2300,3000))

cv2.imshow('orgin',img)
cv2.imshow('new',new)
cv2.waitKey(0)
相关推荐
昵称是6硬币1 小时前
YOLO26论文精读(逐段解析)
人工智能·深度学习·yolo·目标检测·计算机视觉·yolo26
wwlsm_zql4 小时前
「赤兔」Chitu 框架深度解读(十四):核心算子优化
人工智能·1024程序员节
AKAMAI6 小时前
Fermyon推出全球最快边缘计算平台:WebAssembly先驱携手Akamai云驱动无服务器技术新浪潮
人工智能·云计算·边缘计算
云雾J视界6 小时前
TMS320C6000 VLIW架构并行编程实战:加速AI边缘计算推理性能
人工智能·架构·边缘计算·dsp·vliw·tms320c6000
想ai抽6 小时前
基于AI Agent的数据资产自动化治理实验
人工智能·langchain·embedding
小马过河R7 小时前
AIGC视频生成之Deepseek、百度妙笔组合实战小案例
人工智能·深度学习·计算机视觉·百度·aigc
june-Dai Yi8 小时前
免费的大语言模型API接口
人工智能·语言模型·自然语言处理·chatgpt·api接口
王哈哈^_^8 小时前
【数据集】【YOLO】【目标检测】农作物病害数据集 11498 张,病害检测,YOLOv8农作物病虫害识别系统实战训推教程。
人工智能·深度学习·算法·yolo·目标检测·计算机视觉·1024程序员节
数据库安全8 小时前
牛品推荐|分类分级效能飞跃:美创智能数据安全分类分级平台
大数据·人工智能·分类
却道天凉_好个秋8 小时前
卷积神经网络CNN(六):卷积、归一化与ReLU总结
人工智能·神经网络·cnn