求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   模型库  
会员   
 


基于 UML 和EA进行分析设计
7月30-31日 北京+线上



大模型核心技术RAG、MCP与智能体实践
8月14-15日 厦门



图数据库与知识图谱
8月23日-24日 北京+线上
 
追随技术信仰

随时听讲座
每天看新闻
 
 
  OpenCV 教程
1. OpenCV 简介
2. OpenCV 安装
3. OpenCV 安装(C++)
Python OpenCV
4. OpenCV 入门实例
5. OpenCV 基础模块
6. OpenCV 图像处理基础
7. OpenCV 图像基本操作
8. OpenCV 图像算术运算
9. OpenCV 图像阈值处理
10. OpenCV 图像平滑处理
11. OpenCV 图像形态学操作
12. OpenCV 图像边缘检测
13. OpenCV 图像轮廓检测
14. OpenCV 图像直方图
15. OpenCV 视频处理
16. OpenCV 视频目标跟踪
17. OpenCV 视频背景减除
18. OpenCV 人脸检测
19. OpenCV 物体识别
20. OpenCV 图像拼接
21. OpenCV 简单滤镜效果
C++ OpenCV
22. C++ OpenCV 基础操作
23. C++ OpenCV 图像处理
24. C++ OpenCV 基本模块介绍
25. C++ OpenCV 特征检测与描述
26. C++ OpenCV 高级图像处理
27. C++ OpenCV 视频处理
28. C++ OpenCV 机器学习与深度学习
29. C++ OpenCV 项目实战
30. C++ OpenCV 性能优化
 
 
目录
OpenCV 图像基本操作
209 次浏览
4次  

本文将详细介绍图像的四种基本操作:访问和修改像素值、图像 ROI (Region of Interest) 操作、图像通道分离与合并、以及图像的缩放、旋转、平移和翻转。

常用方法:

1. 访问和修改像素值

图像是由像素组成的矩阵,每个像素都有一个或多个值,表示颜色或灰度。在灰度图像中,每个像素只有一个值,表示灰度强度;在彩色图像中,每个像素通常有三个值,分别表示红色、绿色和蓝色(RGB)通道的强度。

访问像素值

在 Python 中,可以使用 OpenCV 库来访问图像的像素值。假设我们有一个灰度图像 img,可以通过 img[y, x] 来访问位于 (x, y) 位置的像素值。对于彩色图像,可以通过 img[y, x, c] 来访问特定通道 c 的像素值,其中 c 为 0(蓝色)、1(绿色)或 2(红色)。

实例

import cv2

# 读取图像
img = cv2.imread('image.jpg')

# 访问像素值
pixel_value = img[100, 150]  # 访问 (150, 100) 位置的像素值
print(pixel_value)

修改像素值

修改像素值同样简单,只需将新值赋给相应的像素位置即可。

实例

# 修改像素值
img[100, 150] = [255, 255, 255]  # 将 (150, 100) 位置的像素值设置为白色

2. 图像 ROI (Region of Interest) 操作

ROI 是指图像中我们感兴趣的区域。通过提取 ROI,我们可以只对图像的特定部分进行处理,从而提高处理效率。

提取 ROI

在 OpenCV 中,可以通过切片操作来提取 ROI。假设我们想要提取图像中左上角 100x100 像素的区域:

实例

# 提取 ROI
roi = img[0:100, 0:100]

修改 ROI

提取 ROI 后,可以对其进行修改,然后将修改后的 ROI 放回原图像中。

实例

# 修改 ROI
roi[:, :] = [0, 255, 0]  # 将 ROI 区域设置为绿色

# 将修改后的 ROI 放回原图像
img[0:100, 0:100] = roi

3. 图像通道分离与合并

彩色图像通常由多个通道组成,例如 RGB 图像的三个通道。有时我们需要将这些通道分离出来进行单独处理,然后再将它们合并回原图像。

通道分离

在 OpenCV 中,可以使用 cv2.split() 函数将图像的通道分离。

实例

# 通道分离
b, g, r = cv2.split(img)

通道合并

分离后的通道可以使用 cv2.merge() 函数合并回原图像。

实例

# 通道合并
merged_img = cv2.merge([b, g, r])

4. 图像缩放、旋转、平移、翻转

图像的几何变换是图像处理中常见的操作,包括缩放、旋转、平移和翻转。

图像缩放

图像缩放可以通过 cv2.resize() 函数实现。可以指定缩放后的图像尺寸或缩放比例。

实例

# 图像缩放
resized_img = cv2.resize(img, (200, 200))  # 将图像缩放为 200x200 像素

图像旋转

图像旋转可以通过 cv2.getRotationMatrix2D() 和 cv2.warpAffine() 函数实现。需要指定旋转中心和旋转角度。

实例

# 图像旋转
(h, w) = img.shape[:2]
center = (w // 2, h // 2)
M = cv2.getRotationMatrix2D(center, 45, 1.0)  # 旋转 45 度
rotated_img = cv2.warpAffine(img, M, (w, h))

图像平移

图像平移可以通过 cv2.warpAffine() 函数实现。需要指定平移矩阵。

实例

# 图像平移
M = np.float32([[1, 0, 100], [0, 1, 50]])  # 向右平移 100 像素,向下平移 50 像素
translated_img = cv2.warpAffine(img, M, (w, h))

图像翻转

图像翻转可以通过 cv2.flip() 函数实现。可以指定翻转方向(水平、垂直或两者)。

实例

# 图像翻转
flipped_img = cv2.flip(img, 1)  # 水平翻转

您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



209 次浏览
4次