基于vscode&python的opencv基础代码(3)

3.3对图像进行移动、旋转、定义图框大小、翻转、裁剪

import cv2 as cv
import numpy as np
# 引用opencv和numpy库

img = cv.imread('photos/ironman.jpg')
cv.imshow('ironman',img)

# Translations
def translate(img,x,y):
# 定义函数
    transMat = np.float32([[1,0,x],[0,1,y]])
# 通过NumPy定义了一个浮点形式平移矩阵transMat,它将决定平移多少像素
# 数位的区别:在内存中占分别32和64个bits,也就是4bytes或8bytes,数位越高浮点数的精度越高
# 第一个参数表示的是[1,0,x],其中x表示图像将向左或向右移动的距离,
# 如果x是正值,则表示向右移动,如果是负值的话,则表示向左移动。
# 第二个表示的是[0,1,y],其中y表示图像将向上或向下移动的距离,
# 如果y是正值的话,则向下移动,如果是负值的话,则向上移动。
    dimensions = (img.shape[1],img.shape[0])
# 引用dimensions表征 图片的大小 width和height
    return cv.warpAffine(img,transMat,dimensions)
# 仿射变换:图片中的一个像素点,通过某种变换,移动到另外一个地方。
# “线性变换”+“平移”:一个向量空间进行一次线形变换并加上平移向量,
# 从而变换到另外一个向量空间的过程。
# 第一个参数表示变换的图片,第二个参数表征平移矩阵,第三个表示希望展示的结果图片的大小
# 两个变换函数cv2.warpAffine     cv2.warpPerspective
# 使用这两个函数你可以实现所有类型的变换。
# 前者接收的参数是2*3的变换矩阵,后者接收的是3*3的变换矩阵

# -y -->up
# -x -->left
# y  -->down
# x  -->right
translated = translate(img,100,100)
cv.imshow('Translated', translated)

# Rotation
# 矩阵中,[0]表示行数,[1]表示列数
# img.shape[:2]-->彩色图片的长、宽
# img.shape[:3]-->彩色图片的长、宽、通道
# img.shape[0]图像的垂直尺寸(高度)
# img.shape[1]图像的水平尺寸(宽度
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值