【Python高级编程】使用OpenCV进行图像旋转详解

import cv2

image = cv2.imread('path_to_your_image.jpg')
(h, w) = image.shape[:2]
center = (w // 2, h // 2)
M = cv2.getRotationMatrix2D(center, angle, scale)
rotated_image = cv2.warpAffine(image, M, (w, h))
cv2.imshow('Rotated Image', rotated_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

这段代码的目的是对图像进行旋转操作。下面我们逐行解释这段代码的具体含义和作用:

代码解释

(h, w) = image.shape[:2]
  • image.shape 返回图像的形状,即图像的高度、宽度和通道数(如果是彩色图像,则有三个通道)。
  • shape[:2] 只获取前两个值,即图像的高度 h 和宽度 w
center = (w // 2, h // 2)
  • 计算旋转中心点的位置。这里选择图像的中心作为旋转的轴心点。
  • w // 2h // 2 分别是图像宽度和高度的一半,即图像的中心点坐标。
M = cv2.getRotationMatrix2D(center, angle, scale)
  • 使用 cv2.getRotationMatrix2D() 函数来计算旋转矩阵 M
  • center 是旋转中心点。
  • angle 是旋转的角度,单位为度(正值表示逆时针旋转,负值表示顺时针旋转)。
  • scale 是缩放因子,1.0 表示保持原尺寸,其他值表示缩小或放大。
rotated_image = cv2.warpAffine(image, M, (w, h))
  • 使用 cv2.warpAffine() 函数对图像进行仿射变换。
  • image 是输入图像。
  • M 是旋转矩阵。
  • (w, h) 是输出图像的尺寸,这里保持与原图像相同。
cv2.imshow('Rotated Image', rotated_image)
  • 使用 cv2.imshow() 函数显示旋转后的图像。
  • 'Rotated Image' 是窗口名称。
  • rotated_image 是旋转后的图像。
cv2.waitKey(0)
  • cv2.waitKey(0) 表示等待键盘输入,参数 0 表示无限等待。
  • 按下任意键后继续执行后续代码。
cv2.destroyAllWindows()
  • 使用 cv2.destroyAllWindows() 函数关闭所有 OpenCV 窗口。

总结

这段代码的主要功能是:

  1. 获取图像的高度和宽度。
  2. 计算图像中心点。
  3. 生成一个旋转矩阵,用于指定旋转的中心点、角度和缩放因子。
  4. 使用仿射变换函数对图像进行旋转操作。
  5. 显示旋转后的图像,并等待用户按键关闭窗口。

通过这段代码,可以对图像进行旋转处理,同时保持图像中心为旋转轴心,并可选择是否缩放图像。

相关推荐

  1. Python高级编程使用OpenCV进行图像旋转详解

    2024-06-18 14:44:02       7 阅读
  2. 使用PythonOpenCV进行图像处理和计算机视觉

    2024-06-18 14:44:02       25 阅读
  3. OpenCV图像翻转和旋转

    2024-06-18 14:44:02       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-18 14:44:02       10 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-18 14:44:02       12 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-18 14:44:02       11 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-18 14:44:02       14 阅读

热门阅读

  1. CSS行内样式书写规范及注意事项

    2024-06-18 14:44:02       5 阅读
  2. 查看mysql数据库端口号

    2024-06-18 14:44:02       7 阅读
  3. 美股 — “四巫日”

    2024-06-18 14:44:02       7 阅读
  4. MyBatis 插件机制详解

    2024-06-18 14:44:02       8 阅读
  5. 富格林:可信守则有效防范暗箱

    2024-06-18 14:44:02       7 阅读
  6. 2024.6.17总结1113

    2024-06-18 14:44:02       8 阅读
  7. AI之Lambda index

    2024-06-18 14:44:02       8 阅读
  8. python中的结构

    2024-06-18 14:44:02       7 阅读
  9. 山东大学软件学院深度学习期末回忆版

    2024-06-18 14:44:02       9 阅读
  10. C# Socket通讯简单Demo

    2024-06-18 14:44:02       6 阅读