中国开源软件网

当前位置: 首页 > 热点 >

在OpenCV中旋转图像,矩阵旋转与缩放

时间:2021-01-27 13:33来源:互联网 作者:小狐

子豪 发自 凹非寺

OpenCV是一个跨平台计算机视觉和机器学习算法库。

它不仅能用来实现各种复杂的算法,还能够对图像进行 预处理:包括图像的平移、旋转、缩放、翻转、裁剪。

Step1. 调用一个函数cv.warpAffine。

Step2. 创建一个平移矩阵,这一步需要借助NumPy进行。

Step3. 将img(需要变换的图像)、transMAT(平移矩阵)和Dimensions(维度)代入仿射变换函数cv.warpAffine,输入x和y以确定平移多少。

向左、向上移动,则x、y设为负数,反之则为正数。

Step4. 采用cv.imshow函数显示图像。

Translation

deftranslation(img,x,y):

tranMAT = np.float32(【 1, 0,x】【 0, 1,y】)

dimensions = (img.shape[ 1],img.shape[ 0])

returncv.warpAffine(img,transMAT,dimensions)

translated = translation(img, -100, 100)

cv.imshow( “Translated”translated)

cv.waitKey( 0)

在OpenCV中旋转图像,可以将任何点用作旋转的中心,同样使用cv.warpAffine函数以及和上面相同的参数。但是旋转矩阵与图像平移是不同的。

Step1. 创建一个旋转函数,定义图像img、旋转角度angle和旋转点rotPoint。

Step2. 利用cv.getRotationMatrix2D(矩阵旋转与缩放)创建一个旋转矩阵rotMAT,其中包括旋转点、旋转角度和比例因子。如果不需要比例因子,则将其设为1.0。

Step3. 输入旋转角度、旋转点对应数值。如不需要设置旋转点,则在Step1中设为空值None

Rotation

defrotate(img,angle,rotPoint=None):

(height,width) = img,shape[: 2]

ifrotPoint isNone:

rotPoint = (width// 2,height// 2)

rotMAT = cv.getRotationMatrix2D(rotPoint,angle, 1.0)

dimension = (width,height)

returncv.warpAffine(img,rotMat,dimension)

rotated = rotated(img, 20)

cv.imshow( “Rotated”rotated)

cv.waitKey( 0)

在OpenCV中旋转图像,矩阵旋转与缩放(图1)

图片缩放

在OpenCV中需要用到函数cv.resize(img, (500, 500), interpolation=cv.INTER_LINEAR)。

根据缩小或放大图像的需要,参数指定插值方法可以选择cv.INTER_AREA(区域插值)cv.INTER_CUBIC(三次样条插值)cv.INTER_LINEAR(线性插值)

如需放大图像,可以采用 INTER_LINEAR(效率较高)或INTER_CUBIC(效率较低)

如需缩小图像,可以采用 INTER_AREA。

Resize

resized = cv.resize(img( 500, 500),interpolation=cv.INTER_LINEAR)

cv.imshow( “resized”resized)

cv.waitKey( 0)

在OpenCV中旋转图像,矩阵旋转与缩放(图2)

图像翻转

使用OpenCV中的cv.flip函数,该函数支持图像的翻转(垂直翻转、水平翻转,以及同时翻转均可)

cv.flip(img,flipcode)翻转模式有三种:0为垂直翻转,1为水平翻转,-1 为两个方向同时翻转。

Flipping

flipped = cv.flip(img, 0)

cv.imshow( “Flipped”flipped)

cv.waitKey( 0)

在OpenCV中旋转图像,矩阵旋转与缩放(图3)

图像裁剪

运用Cropped = image[a1:a2,b1:b2] 裁剪图像img得到一个矩形,高度从a1到a2,宽度从b1到b2。

Cropping

cropped = img[ 100: 200, 100: 200]

cv.imshow( “Cropped”cropped)

cv.waitKey( 0)

在OpenCV中旋转图像,矩阵旋转与缩放(图4)

Raoof Naushad的GitHub主页:

加入AI社群,拓展你的AI行业人脉

վ“ᴗ” ի 追踪AI技术和产品新动态

本文相关词条概念解析:

旋转

旋转(xuánzhuǎn),基本解释:rotate;circle;spin;revolve绕一个轴转动车轮在旋转。(很多地方误注为xuánzhuǎn)。旋转,是在平面内,把一个图形绕点O旋转一个角度的图形变换叫做旋转,点O叫做旋转中心,旋转的角叫做旋转角,如果图形上的点P经过旋转变为点Pˊ,那么这两个点叫做这个旋转的对应点。

网友评论

相关文章