2021-9-30 学习笔记

轻松学OpenCV

1. 图像变换

1. 图像放大、缩小;

2. 图像平移;

3. 图像旋转;

4. 图像仿射变换;

5. 图像裁剪;

6. 图像的位运算(AND, OR, XOR);

7. 图像的分离和融合;

8. 图像的颜色空间;

1.1 图像放大、缩小

import cv2
import argparse
import matplotlib.pyplot as plt

# 1.图像放大,缩小
img = cv2.imread(filename="./OpenCV.png")
b,g,r = cv2.split(m=img)
# print("x = ",x)
# print(img)
# type(img) =  <class 'numpy.ndarray'>
print(img.shape)
# (794, 600, 3)
# cv:[B,G,R] plt:[R,G,B]
print("type(img) = ",type(img))
# plt.imshow(X=img.permute([]))
img = cv2.merge(mv=[r,g,b])
plt.imshow(X=img)
plt.show()


# 获取高宽和通道
height,width,channel = img.shape


# cv2.resize()
# 注意:
# 1.输出尺寸格式为(宽,高)
# 2.默认的插值方法为:双线性插值
# 放大一倍
resized_img = cv2.resize(src=img,dsize=(width*2,height*2),interpolation=cv2.INTER_LINEAR)
plt.imshow(X=resized_img)
plt.show()

# 缩小一倍
small_img = cv2.resize(src=img,dsize=None,fx=0.5,fy=0.5,interpolation=cv2.INTER_LINEAR)
plt.imshow(small_img)

plt.show()

主要使用的函数是cv2.resize(),如下面的例子

# 放大一倍
resized_img=cv2.resize(src=img,dsize(width*2,height*2),interpolation=cv2.INTER_LINEAR)
# 缩小一倍
small_img = cv2.resize(src=img,dsize=None,fx=0.5,fy=0.5,interpolation=cv2.INTER_LINEAR)
有这两种写法

1.2 图像平移

# 图像平移 cv2.warpAffine()
height,width = img.shape[0:2]
# 平移矩阵 向x轴平移了100px 向y平移了50px
M1 = np.float32([[1,0,100],[0,1,50]])
move_img = cv2.warpAffine(src=img,M=M1,dsize=(width,height))
plt.imshow(X=move_img)
# plt.show()

# 平移矩阵 向x轴负方向平移了100px 向y负方向平移了50px
M1 = np.float32([[1,0,-100],[0,1,-50]])
move_img2 = cv2.warpAffine(src=img,M=M1,dsize=(width,height))
plt.imshow(X=move_img2)
# plt.show()

主要使用的方法是move_img = cv2.warpAffine(src=img,M=M1,dsize=(width,height))

需要先创建一个平移矩阵M,# 平移矩阵 向x轴平移了100px 向y平移了50px
M1 = np.float32([[1,0,100],[0,1,50]])

1.3 图像旋转

# 图像的旋转
height,width = img.shape[0:2]
center = (width//2,height//2)
# center =  (300, 397)
center = (width//2.0,height//2.0)
# center =  (300.0, 397.0)
print("center = ",center)

# angle=180逆时针旋转180度,scale=1表示旋转过程中没有缩放
M3 = cv2.getRotationMatrix2D(center=center,angle=180,scale=1)
rotation_img = cv2.warpAffine(src=img,M=M3,dsize=(width,height))
plt.imshow(X=rotation_img)
plt.show()

同样需要旋转矩阵,使用函数# angle=180逆时针旋转180度,scale=1表示旋转过程中没有缩放
M3 = cv2.getRotationMatrix2D(center=center,angle=180,scale=1)

如何使用函数rotation_img = cv2.warpAffine(src=img,M=M3,dsize=(width,height))进行旋转变换

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值