图像处理基础:镜像、缩放与矫正

发布于:2025-07-08 ⋅ 阅读:(26) ⋅ 点赞:(0)

在图像处理中,镜像、缩放和矫正操作是常见的图像变换手段。这些操作可以帮助我们对图像进行调整,以满足不同的需求。本文将详细介绍这三种操作的原理和实现方法,并通过代码示例展示它们的实际应用。

一、图片镜像旋转

1.1 什么是镜像旋转?

镜像旋转是一种特殊的图像变换,它通过水平、垂直或水平垂直翻转来改变图像的方向。与常规的旋转不同,镜像旋转不需要指定旋转中心,而是直接围绕图像的中心进行翻转。

  • 水平翻转:将图像沿 y 轴翻转,坐标从 (x, y) 变为 (-x, y)

  • 垂直翻转:将图像沿 x 轴翻转,坐标从 (x, y) 变为 (x, -y)

  • 水平垂直翻转:同时进行水平和垂直翻转,坐标从 (x, y) 变为 (-x, -y)

1.2 实现代码

在 OpenCV 中,可以使用 cv2.flip 函数来实现镜像旋转。cv2.flip 的参数 flipCode 决定了翻转的方向:

  • 0:垂直翻转

  • > 0:水平翻转

  • < 0:水平垂直翻转

以下是实现代码:

import cv2

# 0:垂直翻转
# 大于0:水平翻转
# 小于0:水平垂直翻转
def test001():
    img = cv2.imread("./opencv_work/src/rabbit.png")
    img_flip = cv2.flip(img, 1)
    cv2.imshow("img", img)
    cv2.imshow("img_flip", img_flip)
    cv2.waitKey(0)
    
if __name__ == '__main__':
    test001()

1.3 应用场景

镜像旋转常用于图像增强、数据预处理以及生成图像变体。例如,在训练机器学习模型时,可以通过镜像旋转来增加数据的多样性。

二、图像缩放

2.1 什么是图像缩放?

图像缩放是指改变图像的尺寸,使其变大或变小。在缩放过程中,需要通过插值算法来计算新像素的值,以保持图像的质量。

OpenCV 提供了多种插值方法,包括:

  • 最近邻插值:速度最快,但图像质量较差。

  • 双线性插值:图像质量较好,计算速度适中。

  • 双三次插值:图像质量最高,但计算速度较慢。

  • Lanczos 插值:适用于高质量的图像缩放。

2.2 实现代码

在 OpenCV 中,可以使用 cv2.resize 函数来实现图像缩放。以下是代码示例:

import cv2

def test001():
    img = cv2.imread("./opencv_work/src/rabbit.png")
    img2=cv2.resize(img,dsize=(200,200),interpolation=cv2.INTER_LINEAR)
    cv2.imshow("img",img)
    cv2.imshow("img2",img2)
    cv2.waitKey(0)

if __name__ == '__main__':
    test001()

2.3 应用场景

图像缩放常用于图像预处理、图像显示以及生成不同分辨率的图像。例如,在网页设计中,需要将图像缩放到不同的尺寸以适应不同的屏幕分辨率。

三、图像矫正

3.1 什么是图像矫正?

图像矫正是通过透视变换来校正图像中的透视畸变。透视变换是一种将图像投影到新视平面的过程,它可以改变图像的视角,使图像中的物体看起来更符合直观感受。

3.2 实现代码

在 OpenCV 中,可以使用 cv2.getPerspectiveTransformcv2.warpPerspective 函数来实现图像矫正。以下是代码示例:

import cv2
import numpy as np  

def test001():
    img=cv2.imread("./opencv_work/src/3.png")
    h,w,c=img.shape
    pts1 = np.float32([[178, 100], [487, 134], [124, 267], [473, 308]])
    pts2 = np.float32([[0, 0], [w, 0], [0, h], [w, h]])
    m=cv2.getPerspectiveTransform(pts1,pts2)
    img2=cv2.warpPerspective(img,m,(w,h))
    
    cv2.imshow('img', img)
    cv2.imshow('img2', img2)
    cv2.waitKey(0)

if __name__ == '__main__':
    test001()

3.3 应用场景

图像矫正常用于文档扫描、图像校正以及增强现实等领域。例如,在文档扫描中,可以通过图像矫正将倾斜的文档图像调整为正视图。

四、总结

本文介绍了图像处理中的三种常见操作:镜像旋转、图像缩放和图像矫正。通过 OpenCV 提供的函数,我们可以轻松实现这些操作,并根据实际需求选择合适的参数和方法。

  • 镜像旋转:通过 cv2.flip 函数实现水平、垂直或水平垂直翻转。

  • 图像缩放:通过 cv2.resize 函数实现图像的缩放,并选择合适的插值方法。

  • 图像矫正:通过 cv2.getPerspectiveTransformcv2.warpPerspective 函数实现图像的透视变换。


网站公告

今日签到

点亮在社区的每一天
去签到