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

计算机视觉应用构建

图像处理技术

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

代码

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)对比图像

小结

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

相关推荐
AndrewHZ4 小时前
图像处理入门020 | 图像二值化:阈值分割基础 —— cv2.threshold 五种类型与自适应阈值铺垫
图像处理·opencv·文档扫描·阈值分割·图像二值化·trackbar·自适应阈值
格林威4 小时前
C# 相机Burst模式图像采集:使用相机内存配合OpenCvSharp和Halcon实现短时间的高速采集的方法
开发语言·人工智能·数码相机·计算机视觉·c#·视觉检测·工业相机
AI智图坊5 小时前
甩手图省事的技术原理:如何用“商品锁定”机制解决AI作图的一致性难题
大数据·人工智能·计算机视觉·ai作画·aigc·ai写作
笑霸final6 小时前
不用上传服务器!用 Vue3 + ONNX Runtime Web 在浏览器本地实现智能抠图
运维·前端·图像处理·ai·onnx·canva可画·web性能优化
TAN-90°-9 小时前
Deep Learning for Computer Vision——Attention and Transformers
人工智能·深度学习·神经网络·机器学习·计算机视觉·cnn·机器翻译
OpenBayes9 小时前
Qwen3.8-27B-FP8 降低大模型部署门槛,开启高效多模态智能体验;MiniMax H3-1K 发布千段视频测试数据集,全面评估 AI 视频生成能力
人工智能·深度学习·计算机视觉·自然语言处理·语音识别·多模态大模型
AI的探索之旅10 小时前
97 个 OpenCV 实例(十三):目标跟踪,CamShift 反向投影
人工智能·opencv·目标跟踪
梦想的颜色11 小时前
ComfyUI 深度硬核科普:节点式 AI 生成框架完整实战(安装、原理、使用场景、避坑)
人工智能·机器学习·计算机视觉·aigc·comfyui·ai视频·图生视频
动物园猫11 小时前
草莓成熟度目标检测数据集:3类别、2,000张图像 | 目标检测
人工智能·目标检测·计算机视觉
AI浩1 天前
关于 Qwen3.8-Next 架构的设计:评估、效率与训练稳定性
人工智能·计算机视觉·自然语言处理