计算机视觉中的2D变换:用Python让图像‘动’起来

嘿,小伙伴们!今天我们要聊的是计算机视觉中的2D变换——那些能让图像‘动’起来的技术。无论你是初学者还是资深开发者,这篇文章都将带你深入了解2D变换,并通过Python代码实战演示。准备好了吗?让我们开始吧!🌟


📊 什么是2D变换?

在计算机视觉中,2D变换是指对图像进行平移、旋转、缩放、剪切等操作的过程。通过这些变换,我们可以改变图像的位置、大小和方向,以达到不同的视觉效果或处理需求。

🧪 实战案例:用Python进行2D变换

假设我们有一张图片,我们想要在这张图片上应用几种常见的2D变换,比如旋转和平移,来看看Python是如何做到这一点的。我们将使用OpenCV库来完成这项任务。

🛠️ 准备工作

首先,确保你已经安装了OpenCV库。如果没有安装,可以通过pip安装:

pip install opencv-python
📖 代码实战
  1. 加载图片

    我们先加载一张图片,并创建一个副本以便进行变换。

    import cv2
    import numpy as np
    
    # 加载图片
    img = cv2.imread('example.jpg')
    img_copy = img.copy()
    
  2. 旋转图片

    • 定义旋转角度:我们将图片逆时针旋转45度。
    angle = 45 * np.pi / 180  # 将角度转换为弧度
    height, width = img.shape[:2]
    rotation_matrix = cv2.getRotationMatrix2D((width / 2, height / 2), angle * 180 / np.pi, 1)
    
    # 应用旋转
    rotated_img = cv2.warpAffine(img_copy, rotation_matrix, (width, height))
    
  3. 平移图片

    • 定义平移距离:我们将图片向右平移100像素,向下平移50像素。
    translation_matrix = np.float32([[1, 0, 100], [0, 1, 50]])
    
    # 应用平移
    translated_img = cv2.warpAffine(img_copy, translation_matrix, (width, height))
    
  4. 缩放图片

    • 定义缩放因子:我们将图片放大两倍。
    scale_factor = 2.0
    scaled_img = cv2.resize(img_copy, None, fx=scale_factor, fy=scale_factor, interpolation=cv2.INTER_LINEAR)
    
  5. 剪切图片

    • 定义剪切矩阵:我们将图片沿水平方向剪切10%。
    shear_matrix = np.float32([[1, 0.1, 0], [0, 1, 0]])
    
    # 应用剪切
    sheared_img = cv2.warpAffine(img_copy, shear_matrix, (width, height))
    
  6. 显示结果

    显示我们变换后的结果,并保存图片。

    # 显示图像
    cv2.imshow('Original Image', img)
    cv2.imshow('Rotated Image', rotated_img)
    cv2.imshow('Translated Image', translated_img)
    cv2.imshow('Scaled Image', scaled_img)
    cv2.imshow('Sheared Image', sheared_img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    # 保存图像
    cv2.imwrite('rotated.jpg', rotated_img)
    cv2.imwrite('translated.jpg', translated_img)
    cv2.imwrite('scaled.jpg', scaled_img)
    cv2.imwrite('sheared.jpg', sheared_img)
    
🎨 代码解析
  1. 加载图片

    • 使用cv2.imread读取图片。
    • 创建一个副本以便进行变换。
  2. 旋转图片

    • 使用cv2.getRotationMatrix2D获取旋转矩阵。
    • 使用cv2.warpAffine应用旋转变换。
  3. 平移图片

    • 定义平移矩阵。
    • 使用cv2.warpAffine应用平移变换。
  4. 缩放图片

    • 使用cv2.resize进行缩放变换。
  5. 剪切图片

    • 定义剪切矩阵。
    • 使用cv2.warpAffine应用剪切变换。
  6. 显示和保存

    • 使用cv2.imshow显示变换后的图像。
    • 使用cv2.imwrite保存变换后的图像。

🎨 显示效果

在这里插入图片描述
在这里插入图片描述

🚀 结语

通过今天的实战演练,大家已经学会了如何使用Python和OpenCV来实现常见的2D变换。这些简单的变换是构建复杂图像处理任务的基础,掌握了它们,你就迈出了计算机视觉应用的第一步!如果你有任何问题或想法,欢迎在评论区留言交流。我们下次再见!喜欢我的文章请关注,点赞和收藏👋


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值