图像处理技术(图像的水平翻转垂直翻转以及水平加垂直翻转)

计算机视觉应用构建

图像处理技术

图像的水平翻转垂直翻转以及水平加垂直翻转

代码

python 复制代码
from __future__ import print_function  # Python 2/3 兼容:使 print 成为函数
import cv2          # 导入 OpenCV 库,用于图像处理
import numpy as np  # 导入 NumPy 库,用于数值计算和矩阵操作

# ==================== 1. 加载图像 ====================
# 指定图像文件的路径(相对路径,位于当前目录下的 images 文件夹中)
imagePath = "images/zebrasmall.png"
# 使用 OpenCV 的 imread 函数读取图像
# 返回值是一个 NumPy 数组,表示图像的像素数据(BGR 格式)
image = cv2.imread(imagePath)

# 检查图像是否加载成功(防御性编程)
if image is None:
    print(f"错误:无法加载图像,请检查路径 '{imagePath}' 是否存在")
    exit(1)

# 获取图像尺寸信息
(h, w) = image.shape[:2]
print(f"图像尺寸:高度={h}像素, 宽度={w}像素")

# ==================== 2. 显示原始图像 ====================
# 创建窗口并显示原始图像(用于与翻转后的图像进行对比)
cv2.imshow("0. Original Image ", image)

# ==================== 3. 水平翻转(镜像) ====================
# cv2.flip() 函数参数说明:
#   - src:输入图像
#   - flipCode:翻转模式
#     *  1:水平翻转(左右翻转,沿Y轴镜像)
#     *  0:垂直翻转(上下翻转,沿X轴镜像)
#     * -1:水平+垂直翻转(同时翻转,相当于旋转180°)
#
# 水平翻转:将图像左右颠倒,像照镜子一样
flippedHorizontally = cv2.flip(image, 1)
cv2.imshow("1. Flipped Horizontally ", flippedHorizontally)

# 等待用户按键后再继续执行(显示水平翻转结果)
# 注意:原代码使用 waitKey(-1),等同于 waitKey(0),无限等待
cv2.waitKey(0)  # 按任意键继续

# ==================== 4. 垂直翻转 ====================
# 垂直翻转:将图像上下颠倒
flippedVertically = cv2.flip(image, 0)
cv2.imshow("2. Flipped Vertically ", flippedVertically)

# 等待用户按键后再继续执行
cv2.waitKey(0)  # 按任意键继续

# ==================== 5. 水平+垂直翻转 ====================
# 水平+垂直翻转:同时进行水平和垂直翻转
# 效果相当于将图像旋转180°
flippedHV = cv2.flip(image, -1)
cv2.imshow("3. Flipped Both H and V ", flippedHV)

# 等待用户按键后关闭所有窗口
cv2.waitKey(0)  # 按任意键继续

# ==================== 6. 并排显示对比(可选增强) ====================
# 为了更直观地对比四种效果,创建一个包含所有翻转图像的对比图
# 注意:所有图像尺寸相同,可以垂直堆叠

# 方法1:垂直堆叠显示四种状态
top_row = np.hstack((image, flippedHorizontally))      # 原始 | 水平翻转
bottom_row = np.hstack((flippedVertically, flippedHV)) # 垂直翻转 | 水平+垂直翻转
comparison = np.vstack((top_row, bottom_row))          # 上下堆叠

cv2.imshow("4. Comparison ", comparison)

# ==================== 7. 等待用户操作并清理资源 ====================
print("\n所有翻转效果已显示")
print("按任意键关闭所有窗口...")
cv2.waitKey(0)  # 等待用户按下任意按键

# 关闭所有 OpenCV 创建的窗口(释放资源)
cv2.destroyAllWindows()

结果

(1)原始图像

(2)水平翻转

(3)垂直翻转

(4)两者都翻转

(5)对比图像

小结

文章仅供参考,有错处欢迎评论区补充参考,文章作为学习回溯使用,不会再多参与,再此共勉。

相关推荐
小蒋观天下10 小时前
专项方案:大场景港口AI安防、多干扰环境下的算法调优与落地实操
人工智能·深度学习·算法·安全·机器学习·计算机视觉·ai大模型
福兮说12 小时前
浏览器里把 iPhone 的 HEIC 转成 JPG:Chrome 解不开、转完大了七成、拍摄时间全丢,六个坑实测
前端·javascript·图像处理·chrome·ios·iphone·heic
YOLO数据集集合16 小时前
Deepseek融合yolo的行人车辆多目标检测系统 |行人检测 车辆检测 多目标检测 YOLO DeepSeek9165期
人工智能·yolo·目标检测·计算机视觉·车辆检测·行人检测
新新学长搞科研17 小时前
【SPIE出版丨EI稳定检索】第三届模式识别与图像分析国际学术会议(PRIA 2026)
图像处理·机器学习·图像分析
ab12376818 小时前
OpenCV 学习笔记
笔记·opencv·学习
咯哦哦哦哦18 小时前
opencv复现 Halcon 双相机拼接
人工智能·数码相机·opencv
兴通物联科技18 小时前
自助终端涉外证件核验选型:XT2010MRZ 嵌入式护照识别模块技术解析
单片机·嵌入式硬件·计算机视觉·硬件架构
lisw0519 小时前
图像质量评估:从误差可见度到结构相似性
人工智能·机器学习·计算机视觉
段一凡-华北理工大学20 小时前
高炉炼铁机器视觉与智能识别十八讲~系列文章09:AI 算法基础:从传统图像处理到深度学习的视觉“大脑“
图像处理·人工智能·算法·机器视觉·工业智能化·高炉炼铁智能化·高炉智能识别
源码学社20 小时前
图像去水印实测:OpenCV inpainting vs LaMa,传统算法和 AI 模型差距有多大
人工智能·opencv·算法·去水印·图片水印·ai去水印