news 2026/6/2 20:33:19

HoRain云--OpenCV图像操作全指南:从入门到精通

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HoRain云--OpenCV图像操作全指南:从入门到精通

🎬 HoRain 云小助手:个人主页

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

目录

⛳️ 推荐

OpenCV 图像基本操作指南

一、环境准备与安装

二、图像基本操作

1. 图像读取

2. 图像显示

3. 图像保存

4. 图像属性获取

三、图像基本操作

1. 图像裁剪

2. 通道操作

3. 图像变换

四、完整示例代码

五、重要注意事项

六、常见问题解决


OpenCV 图像基本操作指南

OpenCV(Open Source Computer Vision Library)是计算机视觉领域最流行的开源库之一,掌握其基本操作是进行图像处理和计算机视觉应用的基础。以下是对OpenCV图像基本操作的全面介绍。

一、环境准备与安装

# 安装OpenCV(Python) pip install opencv-python # 或包含更多功能的版本 pip install opencv-contrib-python

验证安装:

import cv2 print("OpenCV版本:", cv2.__version__)

二、图像基本操作

1. 图像读取

import cv2 # 读取彩色图像(默认) img = cv2.imread('image.jpg') # 读取灰度图像 gray_img = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE) # 检查是否加载成功 if img is None: print("错误:无法加载图像,请检查文件路径")

参数说明

2. 图像显示

# 显示图像 cv2.imshow('Image Window', img) # 等待按键(0表示无限等待) key = cv2.waitKey(0) # 按'q'键退出 if key == ord('q'): print("退出显示") # 关闭所有窗口 cv2.destroyAllWindows()

关键点

3. 图像保存

# 保存处理后的图像 cv2.imwrite('output.jpg', img)

4. 图像属性获取

# 获取图像形状(高度, 宽度, 通道数) print("图像形状:", img.shape) # 彩色图:(H, W, 3) # 获取图像数据类型 print("数据类型:", img.dtype) # 通常是 uint8 # 获取图像总像素数 print("图像大小:", img.size) # H * W * 通道数

三、图像基本操作

1. 图像裁剪

# 裁剪图像区域 [y1:y2, x1:x2] cropped = img[100:300, 200:400]

2. 通道操作

通道分离与合并

# 分离BGR通道 b, g, r = cv2.split(img) # 合并通道 merged = cv2.merge([b, g, r]) # 仅保留红色通道 red = img[:, :, 2]

颜色空间转换

# BGR转灰度 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # BGR转HSV hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # BGR转RGB(用于显示) rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

3. 图像变换

图像缩放

# 按比例缩放 resized = cv2.resize(img, None, fx=0.5, fy=0.5) # 指定尺寸缩放 resized = cv2.resize(img, (800, 600))

图像翻转

# 水平翻转 flipped_h = cv2.flip(img, 1) # 垂直翻转 flipped_v = cv2.flip(img, 0) # 水平+垂直翻转 flipped_both = cv2.flip(img, -1)

四、完整示例代码

import cv2 import numpy as np # 1. 读取图像 img = cv2.imread('lena.jpg') if img is None: print("错误:无法加载图像") exit() # 2. 获取并打印图像属性 print("图像形状:", img.shape) print("图像大小:", img.size) print("数据类型:", img.dtype) # 3. 图像转换(BGR转灰度) gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 4. 显示原始图像和转换后的图像 cv2.imshow('Original', img) cv2.imshow('Gray', gray_img) cv2.waitKey(0) cv2.destroyAllWindows() # 5. 保存灰度图像 cv2.imwrite('lena_gray.jpg', gray_img)

五、重要注意事项

  1. 颜色空间差异:OpenCV默认使用BGR颜色空间,而非常见的RGB。在进行颜色处理时需注意这一点。

  2. 图像存储:OpenCV中图像以NumPy数组形式存储,形状为(height, width, channels)

  3. 通道顺序:BGR表示中,通道顺序是蓝色、绿色、红色。

  4. 图像处理流程:通常的处理流程是:读取图像 → 图像处理 → 显示/保存结果。

  5. 错误处理:始终检查imread返回值,防止因文件路径错误导致程序崩溃。

六、常见问题解决

通过掌握这些基本操作,您已经具备了进行更复杂图像处理任务的基础。接下来可以学习图像增强、边缘检测、特征提取等高级操作,进一步探索OpenCV的广泛应用。

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/28 14:57:15

你不可不知的5个C#跨平台拦截器配置陷阱与应对策略

第一章:C#跨平台拦截器配置的核心概念在现代软件开发中,C#通过.NET平台实现了真正的跨平台能力,尤其在构建微服务或AOP(面向切面编程)架构时,拦截器成为控制方法调用、日志记录、权限校验等横切关注点的关键…

作者头像 李华
网站建设 2026/5/29 17:49:35

音频采样率不一致导致HeyGem处理异常?统一为44.1kHz

音频采样率不一致导致HeyGem处理异常?统一为44.1kHz 在AI数字人视频生成的应用场景中,一个看似微不足道的技术细节——音频采样率,常常成为决定任务成败的关键。不少用户反馈:上传的音频明明能播放、内容清晰,为何HeyG…

作者头像 李华
网站建设 2026/5/28 14:57:11

吐血推荐10个AI论文平台,本科生轻松搞定毕业论文!

吐血推荐10个AI论文平台,本科生轻松搞定毕业论文! AI 工具如何助力论文写作? 在当今信息爆炸的时代,本科生撰写毕业论文早已不再是单打独斗的挑战。借助 AI 工具,不仅可以大幅提高效率,还能有效降低 AIGC&a…

作者头像 李华
网站建设 2026/5/31 1:22:38

虚拟环境激活命令source activate无效?修正Shell语法

虚拟环境激活命令 source activate 无效?修正 Shell 语法 在部署一个 AI 视频生成系统时,你是否曾遇到这样的场景:一切代码准备就绪,启动脚本也写好了,可一运行却报出 ModuleNotFoundError——明明安装过的 gradio 或 …

作者头像 李华