首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

CV图像翻转效果预览

  • 25-04-24 09:21
  • 4254
  • 11131
blog.csdn.net

目录

函数 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轴为对称轴进行翻转

源码

  1. import cv2
  2. img_a = cv2.imread(r"F:\tp\lena_r.png")
  3. # 原图
  4. cv2.imshow("img_a", img_a)
  5. # 水平翻转
  6. img_b = cv2.flip(img_a, 1)
  7. cv2.imshow("img_b", img_b)
  8. # 组合翻转
  9. img_c = cv2.flip(img_a, -1)
  10. cv2.imshow("img_c", img_c)
  11. # 垂直翻转
  12. img_d = cv2.flip(img_a, 0)
  13. cv2.imshow("img_d", img_d)
  14. cv2.waitKey()
  15. cv2.destroyAllWindows()

图像输出翻转效果图

一、代码解读


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

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


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

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


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

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


4. 垂直翻转
  1. img_d = cv2.flip(img_a, 0) # 参数0表示垂直翻转(沿x轴)
  2. 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. 与其他操作的结合
  • 翻转 + 旋转:

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

    1. img_resized = cv2.resize(img, (new_w, new_h))
    2. 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. 实际应用建议:

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

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


完整示例修正
  1. import cv2
  2. img = cv2.imread("image.jpg")
  3. # 水平翻转(镜像)
  4. img_horizontal = cv2.flip(img, 1)
  5. # 垂直翻转(上下颠倒)
  6. img_vertical = cv2.flip(img, 0)
  7. # 组合翻转(等效旋转180度)
  8. img_both = cv2.flip(img, -1)
  9. # 显示结果(添加窗口名称明确说明)
  10. cv2.imshow("Original", img)
  11. cv2.imshow("Horizontal Flip", img_horizontal)
  12. cv2.imshow("Vertical Flip", img_vertical)
  13. cv2.imshow("Both Flip", img_both)
  14. cv2.waitKey(0)
  15. cv2.destroyAllWindows()

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

注:本文转载自blog.csdn.net的星河逐码者的文章"https://blog.csdn.net/weixin_54819010/article/details/146457884"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

114
音视频
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top