opencv python 4 基本变换

opencv python 4 基本变换

改变色彩空间

cv2.cvtColor()函数可以将图像在各个色彩空间之间变换,如RGB,BGR,灰度图像,YUV,HSV等。

dst = cv2.cvtColor(src, code[, dst[, dstCn]])
  • dst:输出图像
  • src:输入图像
  • code:转换方式
  • dstCn:输出图像通道数,默认为0,根据输入图像和转换方式自动生成
import cv2

img = cv2.imread('a.jpg')
img_cvt = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('image', img_cvt)
cv2.waitKey()

opencv提供了超过150种色彩空间转换方法:

f = [i for i in dir(cv2) if i.startswith('COLOR_')]
print(f)

输出为所有转换方式。

改变大小

cv2.resize()函数对图像作制定的大小变换。

dst = cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])
  • dst:输出图像
  • src:输入图像
  • dsize:输出图像大小,若为0则根据fx,fy进行变换
  • fx:相对于原图像的x方向缩放倍数
  • fy:相对于原图像的y方向缩放位数
  • interpolation:变换方式,包括:

img = cv2.imread('a.jpg')
height, width = img.shape[:2]

res = cv2.resize(img, (2 * width, 2 * height), interpolation = cv2.INTER_CUBIC)
cv2.imshow('image', res)
cv2.waitKey()

也可不直接设定转换后的大小而是通过设定fx和fy参数来设置转换的倍数。

res = cv2.resize(img, None, fx = 2, fy = 2, interpolation = cv2.INTER_CUBIC)

图像旋转

对图像进行旋转操作首先要使用cv2.getRotationMatrix2D()计算旋转矩阵。

retval = cv2.getRotationMatrix2D(center, angle, scale)
  • center:中心点
  • angle:旋转角度
  • scale:缩放倍数

获取旋转矩阵后再使用cv2.warpAffine()进行仿射变换。

dst = cv2.warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]])
  • dst:输出图像
  • src:输入图像
  • M:2x3的变换矩阵
  • dsize:输出图像大小
  • flags:插值方式,默认为线性插值INTER_LINEAR
  • borderMode:设定边界的方式,默认为BORDER_CONSTANT
  • borderValue:若设定边界为常量的取值,默认为0
img = cv2.imread('a.jpg')
h, w = img.shape[:2]
M = cv2.getRotationMatrix2D((w / 2, h / 2), 90, 1)
dst = cv2.warpAffine(img, M, (w, h))

cv2.imshow('img', dst)
cv2.waitKey()

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenCV是一个强大的计算机视觉库,它提供了丰富的图像处理和计算机视觉算法,包括透视变换。在Python中,使用OpenCV进行透视变换通常涉及到`cv2.getPerspectiveTransform()`和`cv2.warpPerspective()`这两个核心函数。 1. **获取透视变换矩阵**: `cv2.getPerspectiveTransform(src, dst)` 函数接收两个输入:源图像中的四个点(定义了源图像的不规则矩形区域),以及目标矩形区域的对应点。这个函数会计算一个透视变换矩阵,用于将源图像映射到目标矩形。 2. **应用透视变换**: `cv2.warpPerspective(img, M, dsize, flags=0, borderMode=BORDER_CONSTANT, borderValue=None)` 用这个函数来实际执行变换,其中 `img` 是源图像,`M` 是从上面获得的透视变换矩阵,`dsize` 是目标图像的大小,`flags` 可选参数影响变换的行为(如插值方法),`borderMode` 和 `borderValue` 控制边界像素的处理方式。 一个简单的例子可能如下所示: ```python import cv2 import numpy as np # 假设src_points和dst_points是四点坐标 src_points = np.float32([[56, 65], [368, 52], [28, 387], [389, 390]]) dst_points = np.float32([[0, 0], [300, 0], [0, 300], [300, 300]]) # 计算透视变换矩阵 M = cv2.getPerspectiveTransform(src_points, dst_points) # 读取原图并进行透视变换 img = cv2.imread('input.jpg') warped_img = cv2.warpPerspective(img, M, (300, 300)) # 显示原图和变换后的图像 cv2.imshow('Original', img) cv2.imshow('Warped', warped_img) cv2.waitKey(0) cv2.destroyAllWindows() ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值