网站底部放置备案号,赣州市开发区建设局网站,室内设计较好的学校,扬中论坛扬中人家【1】引言
前序已经学习了如何平移图像#xff0c;相关文章链接为#xff1a;
python学opencv|读取图像#xff08;二十七#xff09;使用cv2.warpAffine#xff08;#xff09;函数平移图像-CSDN博客
在此基础上#xff0c;我们尝试旋转图像的同时缩放图像。
【2】…【1】引言
前序已经学习了如何平移图像相关文章链接为
python学opencv|读取图像二十七使用cv2.warpAffine函数平移图像-CSDN博客
在此基础上我们尝试旋转图像的同时缩放图像。
【2】核心代码
前序学习进程中已经知晓平移图像的核心代码是设置M矩阵使其按照两行三列的形式通过改变第三列的值来移动图像 此时的M矩阵有两个可选变量x和y M[[1,0,x], [0,1,y]] 当x0图像向右移动x大小的位置当y0图像向右下移动y大小的位置当x和y取负值时图像分别向左和向上运动。 当我们想旋转图像使需要调用一个cv2.getRotationMatrix2D()函数来实现旋转。
这个函数的名字也很简单拆开来就是cv.get Rotation Matrix2D()直译就是对二维矩阵进行旋转的意思。
点击下方链接直达cv2.getRotationMatrix2D()函数的官网学习教程
OpenCV: Geometric Image Transformations
在这里会看到 图1
函数有三个参数 Mat cv::getRotationMatrix2D ( Point2f center, #旋转中心需要提前定义好 double angle, #旋转角度 double scale ) #缩放倍数 【3】代码测试
在这里需要提前定义旋转中心
import cv2 as cv # 引入CV模块
import numpy as np #引入numpy模块# 读取图片
src cv.imread(src.png)
rowslen(src) #读取图像行数
colslen(src[0]) #读取图像列数
center(rows/2,cols/2) #旋转中心
然后就是调用cv2.getRotationMatrix2D()函数设置旋转和缩放属性旋转60度缩小为原来的0.8倍。
Mcv.getRotationMatrix2D(center,60,0.8) #旋转并缩放图像
然后依然要使用cv.warpAffine()函数来生成输出图像
dstcv.warpAffine(src,M,(cols,rows)) #输出图像
最后屏幕输出和保存
cv.imshow(src-pingyi, dst) # 在屏幕展示绘制圆形的效果
cv.imwrite(src-pingyi0.png, dst) # 保存图像
cv.waitKey() # 图像不会自动关闭
cv.destroyAllWindows() # 释放所有窗口
此处使用的原图依然是 src.png 图1 src.png
代码运行后的输出为 图2 旋转60度缩小为原来的0.8倍
【4】细节说明
约定旋转中心的时候如果是以原图的中心为依据应该以(rows/2,cols/2)为旋转中心。
【5】结论
掌握了pythonopencv实现图像旋转缩放的操作技巧。