使用OpenCV和Imutils旋转图像-600学习网
600学习网终身会员188,所有资源无秘无压缩-购买会员
在本文中,我们描述了使用OpenCV和Imutils围绕任意点旋转指定角度的图像所需的步骤。使用OpenCV旋转图像
使用OpenCV旋转图像:
1.使用OpenCV的imread函数加载所需的图像。
脚本:加载和显示原始图像
#导入所需库
导入cv2
#从磁盘加载图像
image=cv2.imread(“埃菲尔铁塔.jpg”)
#显示图像
cv2.imshow(“原始图像”,图像)
cv2.waitKey(0)
导入OpenCV库并使用imread函数从工作目录加载埃菲尔铁塔的图像,然后使用imshow函数显示图像。
请注意,如果图像不在工作目录中,则提供给imread函数的参数值应包括图像的路径。
输出:
2.获取图像的空间尺寸(高度.宽度.中心坐标)。
脚本:获取图像的高度.宽度和中心坐标。
#获取图像的尺寸并计算图像的中心
#图像
高度,宽度=图像形状〔:2〕
中心X,中心Y=(宽//2,高//2)
图像的前两个值。shape属姓分别返回图像的高度和宽度。整数除法用于获得中心位置的值,因为旋转图像的函数只接受整数值。中心位置值用于围绕中心旋转图像。
3.定义旋转矩阵以围绕所需点和旋转角度旋转图像。
脚本:定义一个旋转矩阵,使图像围绕中心旋转45度。
##将图像围绕图像中心旋转45度
#获取旋转矩阵
M=cv2.getRotationMatrix2D((中心X,中心Y),45,1.0)
cv2.getRotationMatrix2D函数(顾名思义)定义了一个二维矩阵,以根据传递的参数值旋转图像。
此函数使用旋转点参数(在本例中,图像的中心由坐标(centerX,centerY)表示).旋转角度(在本示例中为45度)和浮点值(在本实例中为1.0)来指定旋转图像相对于原始图像的比例。
示例中的1.0缩放值将旋转图像缩放为与原始图像相同的大小。较高的比例值会放大图像,而较低的比例值则会缩小图像。
根据旋转矩阵旋转图像,并显示旋转后的图像。
脚本:将图像围绕中心旋转45度。
#旋转图像
旋转=cv2.warpAffine(图像,M,(宽度,高度))
#显示图像
cv2.imshow(“旋转45度”,旋转)
cv2.waitKey(0)
旋转矩阵(M)被传递给cv2.warpAffine函数,该函数根据旋转矩阵中指定的值对图像进行旋转。此函数还将图像宽度和高度的元组作为参数。
输出:
图像围绕中心旋转450。请注意,图像逆时针旋转?我们也可以通过在旋转矩阵中传递旋转角度的负值来顺时针旋转图像。
使用OpenCV顺时针旋转图像。
脚本:
#将图像顺时针旋转90度
M=cv2.getRotationMatrix2D((中心X,中心Y),-90,0.5)
旋转=cv2.warpAffine(图像,M,(宽度,高度))
cv2.imshow(“旋转-90度”,旋转)
cv2.waitKey(0)
输出:
让我们比较一下是否使用90度(逆时针90度)作为旋转角度,而不是-90度。
请注意,图像逆时针旋转,并将图像比例减小一半(通过传递0.5作为比例值)。
尽管之前已沿中心(centerX,centerY)旋转图像,但可以使用前面提到的类似步骤围绕图像中的任何点旋转图像。
围绕任意点旋转图像。
脚本:旋转t
#围绕任意点旋转图像
M=cv2.getRotationMatrix2D((15,10),30,1.0)
旋转=cv2.warpAffine(图像,M,(宽度,高度))
cv2.imshow(“绕任意点旋转”,旋转)
cv2.waitKey(0)
输出:
旋转如何切断图像的部分?我将在本文后面向您展示如何避免这种情况。
使用Imutils旋转图像
就像移动图像一样,Imutils包提供了简单的步骤,可以使用易于使用的旋转助手函数在任意点和任意角度旋转图像。
脚本:使用Imutils将图像顺时针旋转30度。
#使用imutils函数将图像旋转30度
旋转=最小旋转(图像,-30)
cv2.imshow(“旋转30度”,旋转)
cv2.waitKey(0)
呼叫imutils。rotate函数,通过将图像和旋转角度作为参数传递来沿所需方向旋转图像。
输出:
与前一幅图像一样,旋转将切断图像的某些部分。尽管在某些用例中这可能是有意的,但我们可以编写代码来确保图像的所有部分仍然在视图中。
脚本:将图像旋转30度,同时确保整个图像都在视图中。
#将图像旋转30度,确保
#查看区域中的整个旋转图像静止视图
rotated=imutils。rotate_bound(图像,-30)
cv2.imshow(“无裁剪旋转”,旋转)
cv2.waitKey(0)
输出:
这一次,使用cv2.rotate_bound辅助函数代替旋转函数,以确保图像的所有部分都在旋转图像中。
摘要:本文展示了使用OpenCV和imutil围绕中心或任何其他任意点顺时针或逆时针旋转图像所需的步骤。它还显示了如何旋转图像以保持完整视图而不裁剪任何部分。
600学习网 » 使用OpenCV和Imutils旋转图像-600学习网