python opencv 放射变换和图像缩放-实现图像平移旋转缩放

python opencv 放射变换和图像缩放-实现图像平移旋转缩放

我们实现这次实验主要用到cv2.resize和cv2.warpAffine

cv2.warpAffine主要是传入一个图像矩阵,一个M矩阵,输出一个dst结果矩阵,计算公式如下:

cv2.resize则主要使用fx,fy按照比例对图像进行缩放:

直接看一下代码:

python 复制代码
import copy
import math
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import os

import cv2

plt.rcParams['font.family'] = 'Microsoft YaHei'
def cv_show(name,img):
    cv2.imshow(name,img)
    #cv2.waitKey(0),接收0,表示窗口暂停
    cv2.waitKey(0)
    #销毁所有窗口
    cv2.destroyAllWindows()


path=r'D:\learn\photo\cv\lena.jpg'



img=cv2.imread(path)


im_resize=cv2.resize(img,None,fx=0.5,fy=0.8)

#cv_show('img',img)

#cv_show('im_resize',im_resize)
w,h=img.shape[0:2]
#cv_show('im_resize',im_resize)
#平移


h,w,c = img.shape
M = np.float32([[1,0,10],[0,1,10]])
img_s= cv2.warpAffine(img,M,(w,h))


#旋转
M=cv2.getRotationMatrix2D(
    (w/2,h/2),
    60,0.9
    )

img_r=cv2.warpAffine(img,M,(w,h))


#cv_show('img_r',img_r)

#cv_show('img_s',img_s)

plt.figure(figsize=(400,600))

plt.subplot(221)
plt.imshow(img)
plt.title('原图')

plt.subplot(222)
plt.imshow(im_resize)
plt.title('缩放')
plt.subplot(223)
plt.imshow(img_r)
plt.title('平移')
plt.subplot(224)
plt.imshow(img_s)
plt.title('旋转')
plt.show()
os.system("pause")

结果如图:

相关推荐
咚为几秒前
告别 lazy_static:深度解析 Rust OnceCell 的前世今生与实战
开发语言·后端·rust
全栈开发圈7 分钟前
干货分享|R语言聚类分析1
开发语言·r语言
Aawy12010 分钟前
C++与Rust交互编程
开发语言·c++·算法
未知鱼11 分钟前
Python安全开发asyncio(异步IO与高并发)
python·安全·网络安全·github
代码探秘者13 分钟前
【大模型应用】5.深入理解向量数据库
java·数据库·后端·python·spring·面试
小王不爱笑13213 分钟前
Java 代理模式与 AOP 底层
java·开发语言·代理模式
小鸡吃米…13 分钟前
Python 网络爬虫
开发语言·爬虫·python
weixin_4041576815 分钟前
Java高级面试与工程实践问题集(二)
java·开发语言·面试
2401_8320353415 分钟前
使用Python处理计算机图形学(PIL/Pillow)
jvm·数据库·python
dapeng287019 分钟前
Django全栈开发入门:构建一个博客系统
jvm·数据库·python