OPenCV图像处理

1.图像的缩放:就是按照所给的图像将图像方法缩小

复制代码
#缩放有两种:一种是绝对尺寸,一种是相对尺寸
import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
#读取图像
img1 = cv.imread('image1.jpg',1)
#获取长宽
rows,cols = cv.shape[:2]
#第一种获取缩放矩阵
res = cv.resize(img1,(2*rows,2*cols))
plt.imshow(res)
plt.show()
#第一种获取缩放矩阵
res1 = cv.resize(img1,None,fx = 0.3,fy = 0.7)#None默认数据类型
plt.imshow(res1[:,:,::-1])
plt.show()
复制代码

2.图像平移:在原有的图像上面进行平移

复制代码
import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
#读取图像
img1 = cv.imread('image1.jpg',1)
#获取长宽
rows,cols = cv.shape[:2]
M = np.float([[1,0,50],[0,1,100]])#执行类型为浮点型
#获取平移矩阵
res = cv.warpAffine(img1,M,(rows,cols))
plt.imshow(res[:,:,::-1])#转为BGR通道
plt.show()
复制代码

3.图像旋转:是将图像围绕中心点进行一定角度地旋转

复制代码
import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
#读取图像
img1 = cv.imread('image1.jpg',1)
#获取长宽
rows,cols = cv.shape[:2]
#获取旋转矩阵
M = getRotationMattix2D((rows/2,cols/2),45,1)#以中心旋转45度,缩放一倍
res = cv.warpAffine(img1,M,(rows,cols))
plt.imshow(res[:,:,::-1])
plt.show()
复制代码

4.图像的仿射变换:在图像的三个点对图像进行变换

复制代码
import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
#读取图像
img1 = cv.imread('image1.jpg',1)
#获取长宽
rows,cols = cv.shape[:2]
#获取两个像素点
pst1 = np.float32([],[],[])
pst2 = np.float32([],[],[])
#获取旋转矩阵
M = getAffineTransform(pst1,pst2)#两个像素点转换
res = cv.warpAffine(img1,M,(rows,cols))
plt.imshow(res[:,:,::-1])
plt.show()
复制代码

5.图像的透射变换,与仿射变换相似,但是这是以四个点为准,其中三个不能重复

复制代码
import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
#读取图像
img1 = cv.imread('image1.jpg',1)
#获取长宽
rows,cols = cv.shape[:2]
#获取两个像素点
pst1 = np.float32([],[],[],[])
pst2 = np.float32([],[],[],[])
#获取旋转矩阵
M = getPerspectiveTransform(pst1,pst2)#两个像素点转换
res = cv.warpPerspective(img1,M,(rows,cols))
plt.imshow(res[:,:,::-1])
plt.show()
复制代码

6.图像金字塔:与图像的缩放相似,一种上采样也就是放大,另外一种下采样也就是缩小

复制代码
import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
#读取图像
img1 = cv.imread('image1.jpg',1)
img_up = pycUp(img1)
plt.imshow(img_up[:,:,::-1])
plt.show()
img_Down = pyrDown(img1)
plt.imshow(img_down[:,:,::-1])
plt.show()
复制代码
posted @   求知律己  阅读(214)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示