opencv图像转matplotlib

博客主要围绕OpenCV图像转换为Matplotlib展开,涉及信息技术领域中图像处理相关内容,通过特定方法实现图像格式的转换,以满足不同场景下对图像展示和处理的需求。

在这里插入图片描述

### 使用OpenCV进行图像的方法 在计算机视觉领域,OpenCV 提供了多种方法来实现图像的旋操作。这些方法可以满足不同的需求场景,例如基于仿射变换的自定义旋、固定角度的快速旋以及更复杂的几何变换。 #### 基于 `cv2.getRotationMatrix2D` 的通用旋 这是最常用的一种方式,允许用户指定旋中心、旋角度和缩放比例。通过调用该函数生成一个 2×3 的仿射变换矩阵,并将其应用于目标图像完成旋操作[^1]。 ```python import cv2 # 加载原始图像 image = cv2.imread('input_image.jpg') # 获取图像的高度和宽度 (h, w) = image.shape[:2] # 定义旋参数 center = (w // 2, h // 2) # 设置旋中心为图像中心 angle = 45 # 设定旋角度(正数表示逆时针) scale = 1.0 # 缩放因子 # 计算旋矩阵 rotation_matrix = cv2.getRotationMatrix2D(center=center, angle=angle, scale=scale) # 应用仿射变换执行旋 rotated_image = cv2.warpAffine(image, rotation_matrix, (w, h)) # 展示结果 cv2.imshow("Original Image", image) cv2.imshow("Rotated Image", rotated_image) cv2.waitKey(0) cv2.destroyAllWindows() ``` 此代码片段展示了如何利用 OpenCV 实现围绕图像中心点按给定角度旋的功能[^1]。 --- #### 利用 `cv2.rotate` 进行预设角度旋 如果仅需对图像应用固定的旋角度(如 90° 或 180°),可以直接使用 `cv2.rotate()` 函数简化流程[^4]。 ```python import cv2 # 加载输入图像 image = cv2.imread('input_image.jpg') # 执行顺时针方向上的 90 度旋 rotated_image = cv2.rotate(image, cv2.ROTATE_90_CLOCKWISE) # 可选其他选项: # cv2.ROTATE_180 -> 旋 180 度 # cv2.ROTATE_90_COUNTERCLOCKWISE -> 逆时针旋 90 度 # 显示处理后的图像 cv2.imshow("Rotated by Fixed Angle", rotated_image) cv2.waitKey(0) cv2.destroyAllWindows() ``` 这种方法适用于不需要灵活调整旋角度的情况,能够显著减少计算复杂度[^4]。 --- #### 结合 Matplotlib 可视化效果对比 为了更好地观察不同旋策略的效果差异,还可以借助 Matplotlib 将原图与经过各种旋变换的结果一同展示出来。 ```python import cv2 import matplotlib.pyplot as plt # 载入测试素材 src = cv2.imread('test_image.png') (rows, cols, _) = src.shape # 方案一:标准 API 自由旋 M_free_rot = cv2.getRotationMatrix2D((cols / 2, rows / 2), angle=30, scale=0.7) free_rot_result = cv2.warpAffine(src, M_free_rot, dsize=(cols, rows)) # 方案二:内置命令简单翻 fixed_angle_rot = cv2.rotate(src, cv2.ROTATE_90_CLOCKWISE) # 创建画布布局子图区域 fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(15, 5)) axes[0].imshow(cv2.cvtColor(src, cv2.COLOR_BGR2RGB)), axes[0].set_title("Source") axes[1].imshow(cv2.cvtColor(free_rot_result, cv2.COLOR_BGR2RGB)), axes[1].set_title("Free Rotate") axes[2].imshow(cv2.cvtColor(fixed_angle_rot, cv2.COLOR_BGR2RGB)), axes[2].set_title("Fixed-Angle Rotate") plt.tight_layout(), plt.show() ``` 以上脚本不仅实现了两种主要类型的旋逻辑,还提供了直观的数据呈现形式以便分析比较。 --- #### 关键注意事项 - **坐标系约定**:按照 OpenCV 默认设定,左上角被当作整个画面系统的起点位置;因此当设置正值的角度值时实际表现为沿逆时针方向动[^5]。 - **边界填充模式**:默认情况下超出新范围的部分会被裁剪掉或者留白填补,默认行为可通过额外参数进一步定制[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值