CV图像翻转效果预览

目录

函数 flip函数

源码

图像输出翻转效果图

一、代码解读

1. 原图显示

2. 水平翻转(镜像翻转)

3. 组合翻转(水平+垂直翻转)

4. 垂直翻转

二、重点图像翻转知识点精讲

1. cv2.flip() 函数详解

2. 翻转的数学原理

3. 应用场景

4. 与其他操作的结合

三、总结及注意事项

核心知识点总结

注意事项

完整示例修正


函数 flip函数

语法

    dst=cv2.flip(src,flipcode),flipcode 有3种状态

  • 大于0 是以Y轴为对称轴进行翻转
  • 小于0 是以X轴Y轴方向同时翻转
  • 等于0 是以X轴为对称轴进行翻转

源码

import cv2

img_a = cv2.imread(r"F:\tp\lena_r.png")

# 原图
cv2.imshow("img_a", img_a)
# 水平翻转
img_b = cv2.flip(img_a, 1)
cv2.imshow("img_b", img_b)

# 组合翻转
img_c = cv2.flip(img_a, -1)
cv2.imshow("img_c", img_c)

# 垂直翻转
img_d = cv2.flip(img_a, 0)
cv2.imshow("img_d", img_d)

cv2.waitKey()
cv2.destroyAllWindows()

图像输出翻转效果图

一、代码解读


1. 原图显示
img_a = cv2.imread(r"F:\tp\lena_r.png")  # 读取BGR图像
cv2.imshow("img_a", img_a)              # 显示原始图像
  • 读取图像文件 lena_r.png,默认以BGR格式加载。

  • 使用 cv2.imshow() 显示原始图像,窗口名称为 img_a


2. 水平翻转(镜像翻转)
img_b = cv2.flip(img_a, 1)  # 参数1表示水平翻转(沿y轴)
cv2.imshow("img_b", img_b)  # 显示水平翻转结果
  • cv2.flip(img, 1):水平翻转图像,翻转轴为垂直中轴线(类似镜面反射)。

  • 效果:图像左右对称交换。


3. 组合翻转(水平+垂直翻转)
img_c = cv2.flip(img_a, -1)  # 参数-1表示同时水平和垂直翻转
cv2.imshow("img_c", img_c)   # 显示组合翻转结果
  • cv2.flip(img, -1):先水平翻转,再垂直翻转(等价于绕图像中心旋转180度)。

  • 效果:图像左右和上下均对称交换。


4. 垂直翻转
img_d = cv2.flip(img_a, 0)  # 参数0表示垂直翻转(沿x轴)
cv2.imshow("img_d", img_d)  # 显示垂直翻转结果
  • cv2.flip(img, 0):垂直翻转图像,翻转轴为水平中轴线。

  • 效果:图像上下对称交换。


二、重点图像翻转知识点精讲


1. cv2.flip() 函数详解
  • 功能:对图像进行几何翻转。

  • 语法

    dst = cv2.flip(src, flipCode)
    • src:输入图像(BGR、灰度图等)。

    • flipCode:翻转模式标志:

      • 1:水平翻转(沿y轴)。

      • 0:垂直翻转(沿x轴)。

      • -1:同时水平和垂直翻转。

  • 返回值:翻转后的图像 dst


2. 翻转的数学原理
  • 水平翻转:像素点坐标变换为 (x, y) → (width-1-x, y)

  • 垂直翻转:像素点坐标变换为 (x, y) → (x, height-1-y)

  • 组合翻转:像素点坐标变换为 (x, y) → (width-1-x, height-1-y)


3. 应用场景
  1. 数据增强

    • 在深度学习训练中,通过翻转扩充数据集,提升模型泛化能力。

    • 示例:人脸检测时,水平翻转图像增加不同视角样本。

  2. 图像校正

    • 修正因摄像头安装方向导致的图像颠倒问题。

    • 示例:监控摄像头画面垂直翻转以符合人眼习惯。

  3. 对称性分析

    • 检测图像中的对称结构(如建筑、生物形态)。

    • 示例:医学图像中分析器官对称性。


4. 与其他操作的结合
  • 翻转 + 旋转

    img_flipped = cv2.flip(img, 1)  # 水平翻转
    img_rotated = cv2.rotate(img_flipped, cv2.ROTATE_90_CLOCKWISE)  # 顺时针旋转90度
  • 翻转 + 缩放

    img_resized = cv2.resize(img, (new_w, new_h))
    img_flipped = cv2.flip(img_resized, 0)  # 垂直翻转

三、总结及注意事项


核心知识点总结
  1. 翻转模式

    • 1:水平翻转(左右镜像)。

    • 0:垂直翻转(上下颠倒)。

    • -1:组合翻转(等效旋转180度)。

  2. 坐标变换

    • 翻转操作本质是对像素坐标的映射,不涉及插值计算。

  3. 内存与性能

    • 翻转是原地操作(无复杂计算),性能高效。


注意事项
  1. 参数混淆问题

    • 避免错误使用参数(如将垂直翻转误写为 flipCode=1)。

    • 错误示例

      img = cv2.flip(img, 1)  # 预期垂直翻转,实际得到水平翻转
  2. 多通道支持

    • cv2.flip() 支持所有通道类型的图像(如BGR、灰度、RGBA)。

    • 对于含Alpha通道的图像(如PNG),Alpha通道会一同翻转。

  3. 图像边界处理

    • 翻转操作不会引入黑边或裁剪,保持原始图像完整内容。

  4. 与旋转的区别

    • 翻转是镜像对称操作,旋转是绕中心点的角度变换。

    • 示例

      • cv2.flip(img, 1) ≠ cv2.rotate(img, cv2.ROTATE_180)

  5. 实际应用建议

    • 数据增强:在训练时随机应用翻转,避免过拟合。

    • 视频处理:实时翻转视频流需注意性能(如摄像头镜像模式)。


完整示例修正
import cv2

img = cv2.imread("image.jpg")

# 水平翻转(镜像)
img_horizontal = cv2.flip(img, 1)
# 垂直翻转(上下颠倒)
img_vertical = cv2.flip(img, 0)
# 组合翻转(等效旋转180度)
img_both = cv2.flip(img, -1)

# 显示结果(添加窗口名称明确说明)
cv2.imshow("Original", img)
cv2.imshow("Horizontal Flip", img_horizontal)
cv2.imshow("Vertical Flip", img_vertical)
cv2.imshow("Both Flip", img_both)
cv2.waitKey(0)
cv2.destroyAllWindows()

通过以上分析,可以更精准地掌握图像翻转的操作逻辑与应用场景,避免常见误区。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值