【OpenCV笔记2】

算术操作

    1.图像加法

    2.图像混合

    3.图像缩放

    4图像平移

    5.图像旋转

1.图像加法:cv.add()函数将两幅相同大小和类型图像相加,是饱和操作,Numpy添加是模运算

>>>x=np.uint8([250])

>>>y=np.uint8([10)

>>>print(cv.add(x,y)) #250+10=260-->255

[[255]]

>>>print(x+y)  #250+10=260 % 256-->4

[4]

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
cloud=cv.imread('cloud.jpg')
sky=cv.imread('sky.jpg')
img1=cv.add(cloud,sky)
img2=(cloud+sky)
plt.imshow(img1[:,:,::-1])
plt.imshow(img2[:,:,::-1])
plt.show()

 2.图像的混合:是一种权重不同的加法,计算公式 g(x)=(1-a)f0(x)+af1(x),利用函数cv.addWeighted()实现图像混合

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
#获取图像
cloud=cv.imread('cloud.jpg')
sky=cv.imread('sky.jpg')
#图像混合
img=cv.addWeighted(cloud,0.7,sky,0.3,0)
#图像显示
plt.figure(figsize=(8,8))
plt.imshow(img[:,:,::-1])
plt.show()

 3.图像的缩放:

cv.resize(src,dsize,fx=0,fy=0,interpolation=cv.INTER_LINEAR)

参数:

1>src:输入图像

2>dsize:绝对尺寸,指定调整后的图像大小

3>fx,fy:相对尺寸,将dsize设置为None,fx、fy设置成比例因子

4>interpolation:插值方法

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
cloud=cv.imread('cloud.jpg')
#plt.imshow(cloud[:,:,::-1])
plt.show()
#绝对尺寸
'''
rows,cols=cloud.shape[:2]
res=cv.resize(cloud,(2*cols,2*rows))
plt.imshow(res[:,:,::-1])
plt.show()
'''
#相对尺寸
res1=cv.resize(cloud,None,fx=0.5,fy=0.5)
plt.imshow(res1[:,:,::-1])
plt.show()

 4.图像平移:

cv.warpAffine(img,M,dsize)

M:2*3矩阵,设置为np.float32类型Numpy数组,对于(x,y)移动到(x=m,y+n)处,矩阵为

\begin{bmatrix} 1,0,m& & \\ 0,1,n & & \end{bmatrix}

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
cloud=cv.imread('cloud.jpg')
#plt.imshow(cloud[:,:,::-1])
#plt.show()
rows,cols=cloud.shape[:2]
M=np.float32([[1,0,100],[0,1,50]])
res=cv.warpAffine(cloud,M,(cols,rows))
plt.imshow(res[:,:,::-1])
plt.show()

 

 5.图像旋转:

cv.getRotationMatrix2D(center,angle,scale)

参数:

1>center:旋转中心

2>angle:旋转角度

3>scale:缩放比例

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
cloud=cv.imread('cloud.jpg')
rows,cols=cloud.shape[:2]
#生成旋转矩阵
M=cv.getRotationMatrix2D((cols/2,rows/2),90,1)
#进行旋转变换
res=cv.warpAffine(cloud,M,(cols,rows))
#图像显示
plt.imshow(res[:,:,::-1])
plt.show()

猜你喜欢

转载自blog.csdn.net/m0_70964767/article/details/127035738