python opencv旋转图片,opencv旋转图像函数

  python opencv旋转图片,opencv旋转图像函数

  Imutils是基于OPenCV的一个包,可以更简单的调用OPenCV接口。可以轻松实现图像平移、旋转、缩放、骨架等一系列操作。本文将用它来实现图像旋转操作,有兴趣的可以了解一下。

  00-1010前言使用OpenCV旋转图像使用OpenCV顺时针旋转图像围绕任意点旋转图像使用Imutils旋转图像旋转图像摘要

  

目录

 

  在本文中,将描述使用OpenCV和Imutils围绕任意点以指定角度旋转图像所需的步骤。

  

前言

 

  使用OpenCV旋转图像:

  1.使用OpenCV的imread函数加载所需的图像。

  脚本:加载并显示原始图像

  #导入所需的库

  导入cv2

  #从磁盘加载图像

  image=cv2 . im read( Eiffel _ tower . jpg )

  #显示图像

  cv2.imshow(原始图像,图像)

  cv2.waitKey(0)

  导入OpenCV库并使用imread函数从工作目录中加载埃菲尔铁塔的图像,然后使用imshow函数显示图像。

  请注意,如果图像不在工作目录中,提供给imread函数的参数值应该包括图像的路径。

  输出:

  2.获取图像的空间维度(高度、宽度、中心坐标)。

  获得脚本:图像的高度、宽度和中心坐标。

  #获取图像的尺寸并计算

  #图像

  高度,宽度=image.shape[:2]

  centerX,centerY=(宽度//2,高度//2)

  image.shape属性的前两个值分别返回图像的高度和宽度。整数除法用于获取中心位置的值,因为旋转图像的函数只接受整数值。中心位置值对于围绕中心旋转图像很有用。

  3.定义一个旋转矩阵,围绕所需的点和旋转角度旋转图像。

  脚本:定义了一个旋转矩阵来围绕中心45旋转图像。

  # #围绕图像中心将图像旋转45度

  #获取旋转矩阵

  m=cv2 . getrotationmatrix 2d((centerX,centerY),45,1.0)

  2.cv2.getRotationMatrix2D函数(顾名思义)定义了一个二维矩阵,用于根据传递的参数值旋转图像。

  该函数通过采用旋转点参数(在本例中,图像的中心由坐标(centex,centerY)表示)、旋转角度(在本例中为45度)和浮点值(在本例中为1.0)来指定旋转图像相对于原始图像的比例。

  在我们的示例中,缩放值1.0将旋转后的图像缩放到与原始图像相同的大小。较高的比例值会放大图像,而较低的比例值会缩小图像。

  4.根据旋转矩阵旋转图像,并显示旋转后的图像。

  将脚本:图像围绕中心旋转45度。

  #旋转图像

  rotated=cv2.warpAffine(image,M,(width,height))

  #显示图像

  cv2.imshow(旋转45度,已旋转)

  cv2.waitKey(0)

  旋转矩阵(M)被传递给cv2.warpAffine函数,该函数根据旋转矩阵中指定的值对图像应用旋转。这个函数也将图像宽度和高度的元组作为参数。

  输出:

  图像周长

  绕中心旋转 450。注意图像是逆时针方向旋转的吗?我们还可以通过在旋转矩阵中传递旋转角度的负值来顺时针旋转图像。

  

 

  

使用 OpenCV 顺时针旋转图像

 

  脚本:

  

# rotate the image by 90 degrees in clockwise direction

 

  输出:

  

 

  让我们比较一下如果我们通过 90⁰(逆时针 90⁰ 旋转)作为旋转角度而不是 -90⁰ 的情况。

  

 

  请注意,图像以逆时针方向旋转,还将图像比例缩小了一半(通过传递 0.5 作为比例值)。

  虽然之前已经沿中心(centerX, centerY)旋转了图像,但可以使用前面提到的类似步骤围绕图像中的任意点旋转图像。

  

 

  

围绕任意点旋转图像

 

  脚本:将图像围绕点 (15, 10) 旋转 30 度。

  

# rotate our image around an arbitrary point

 

  输出:

  

 

  旋转如何切断图像的某些部分?我将在本文后面展示如何避免这种情况。

  

 

  

使用 Imutils 旋转图像

 

  就像移动图像一样,Imutils 包提供了使用简单易用的旋转辅助函数沿任意点和任意角度旋转图像的简单步骤。

  脚本:使用 Imutils 将图像顺时针旋转 30⁰。

  

# rotate our image around an arbitrary point

 

  调用 imutils.rotate函数,通过将图像和旋转角度作为参数传递,将图像沿所需方向旋转。

  输出:

  

 

  就像在前面的图像中一样,旋转会切断图像的某些部分,虽然这可能在某些用例中是有意的,但我们可以编写代码,确保图像的所有部分仍然在视图中。

  脚本:将图像旋转 30⁰,同时确保整个图像都在视图中。

  

# rotate the image by 30 degrees, ensuring the

 

  输出:

  

 

  这次使用 cv2.rotate_bound 辅助函数而不是旋转函数来确保图像的所有部分都在旋转后的图像中。

  

 

  

总结

 

  本文展示了使用OpenCV和imutil 包围绕中心或任何其他任意点以顺时针或逆时针方向旋转图像所需的步骤。还展示了如何旋转图像以保留完整视图,而不裁剪任何部分。

  到此这篇关于OpenCV+Imutils实现图像的旋转操作的文章就介绍到这了,更多相关OpenCV Imutils图像旋转内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: