news 2026/4/22 21:31:35

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/23 11:12:37

为什么你的LINQ查询这么慢?3步诊断并优化C#集合筛选逻辑

第一章:为什么你的LINQ查询这么慢?在.NET开发中,LINQ(Language Integrated Query)以其简洁优雅的语法深受开发者喜爱。然而,在实际项目中,许多开发者发现原本预期高效的查询却导致了显著的性能瓶…

作者头像 李华
网站建设 2026/4/23 13:09:18

探索Google Earth Pro:从3D浏览到历史影像

活动一:Google Earth Pro 应用指南 简介 Google Earth Pro(简称 GEP)是一款免费的桌面软件,能够查看大量免费提供的遥感影像和其他空间数据。GEP 拥有全球景观的近期和历史影像,使其成为一个强大的空间数据库。GEP 的影…

作者头像 李华
网站建设 2026/4/22 20:36:44

为什么顶尖C#开发者都在用不安全代码?真相竟然是…

第一章:为什么顶尖C#开发者都在用不安全代码?真相竟然是…在高性能计算、游戏引擎开发或底层系统编程中,越来越多的顶尖C#开发者选择启用不安全代码(unsafe code)。这并非出于炫技,而是为了突破托管环境的性…

作者头像 李华
网站建设 2026/4/23 13:52:30

ESP32实现大模型本地运行的实战案例

用ESP32跑大模型?边缘AI的极限挑战与实战突破 你有没有想过,一块不到2美元的ESP32开发板,也能“运行”像BERT、GPT这样的大语言模型? 听起来像是天方夜谭。毕竟,这些动辄上亿参数、需要GPU集群支撑的AI巨兽&#xff0…

作者头像 李华
网站建设 2026/4/23 13:55:05

PyQt5 实现 Windows EXE 程序在线更新(自动下载 + 覆盖升级)

一、前言 在使用 PyQt5 PyInstaller 开发 Windows 桌面工具时,一个非常现实的问题是:👉 程序如何自动检测新版本,并完成在线升级?本文基于一个真实可用、已落地的更新方案,实现了: ✅ 远程版本…

作者头像 李华