news 2026/4/17 15:45:57

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/4/18 3:57:54

282. Java Stream API - 从 Collection 或 Iterator 创建 Stream

文章目录282. Java Stream API - 从 Collection 或 Iterator 创建 Stream✅ 一、从 Collection 创建 Stream(最常见方式)🧩 二、Map 没有 stream(),那怎么办?📌 示例:打印 Map 中的键值对&#…

作者头像 李华
网站建设 2026/4/18 3:58:40

HeyGem推荐使用清晰人声音频,背景噪音会影响效果

HeyGem推荐使用清晰人声音频,背景噪音会影响效果 在数字人视频生成技术迅速普及的今天,越来越多的企业与创作者开始尝试用AI驱动虚拟形象“开口说话”。无论是在线课程中的虚拟讲师、企业宣传里的品牌代言人,还是直播带货中的数字主播&#x…

作者头像 李华
网站建设 2026/4/17 9:11:39

HoRain云--Vue导出Excel的5种实用方法

🎬 HoRain云小助手:个人主页 🔥 个人专栏: 《Linux 系列教程》《c语言教程》 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!…

作者头像 李华
网站建设 2026/4/17 13:38:39

HeyGem能否处理4K视频?高分辨率支持但建议降级

HeyGem能否处理4K视频?高分辨率支持但建议降级 在数字人技术迅速渗透虚拟主播、智能客服和在线教育的今天,AI驱动的口型同步能力已成为内容生产的核心竞争力。用户不再满足于“能动”的数字人,而是追求自然流畅、唇形精准匹配语音的表现力。H…

作者头像 李华
网站建设 2026/4/17 17:55:25

如何用C#集合表达式实现秒级数据过滤?90%程序员忽略的2个关键点

第一章:C#集合表达式筛选的核心概念在C#开发中,集合表达式筛选是处理数据集合的核心技术之一。通过LINQ(Language Integrated Query),开发者能够以声明式语法高效地过滤、转换和操作集合数据,极大提升了代码…

作者头像 李华