Opencv对图像进行几何变换~

不知道前几章的学习大家都掌握的如何了,我们要继续前进啦~

对图像进行集合运算:移动,旋转等等。

opencv中有两个用于变换的函数:

  •  cv2.warpAffine    (接收参数2*3的变换矩阵)
  • cv2.warpPerspective    (接收参数3*3的变换矩阵)
     这两个函数可以实现所有类型的变换!(有关参数问题我会在具体的例子中详细讲解)

1.扩展缩放

  • 扩展缩放是什么意思呢?

答:放大、缩小~

  • 扩展缩放改变的是啥呢?

答:尺寸。

  • 用什么函数呢?

答:cv2.resize()

  • cv2.resize()的参数是啥?

答:

这个可有两种情况:

a.输入图像名称,None,缩放因子,inperlation=cv2.INTER_函数

b.输入图像名称,输出图像尺寸,inperlation=cv2.INTER_函数

看懂了吗?在有缩放因子时,我们不用写出输出图像尺寸;有输出图像尺寸时,就不用写缩放因子啦~

  • 在缩放时我们推荐用什么函数呢?

答:cv2.INTER_AREA(象素关系重采样:缩可避免波纹,放类似最近邻插值法)

  • 在扩展时我们推荐用什么函数呢?

答:cv2.INTER_CUBIC(立方插值法)

cv2.INTER_LINEAR(双线性插值法)

  • 默认情况下所有改变图像尺寸大小的操作使用的插值方法都是啥?
答:cv2.INTER_LINEAR

说了这么多,其实就是改变图像尺寸这件小事,我们上个代码来看看吧~

# -*- coding:utf-8 -*-
"""
Created on Feb 6 20:38:55 2017

@author: Y

"""

import cv2
import numpy as np

img = cv2.imread('C:\Users\Administrator\Desktop\opencvimg\qiebaobao.jpg')

#两种方法大家懂得,哪一种都阔以
#这个0.5表示是原图的0.5倍,自然会变小
#变小要用cv2.INTER_AREA记得吗?
#变大时用cv2.INTER_CUBIC
res = cv2.resize(img,None,fx = 0.5,fy = 0.5,interpolation = cv2.INTER_AREA)

#2倍自然就是变大咯
#height,width = img.shape[:2]
#res = cv2.resize(img,(2*width,2*height),interpolation = cv2.INTER_CUBIC)

while(1):
    cv2.imshow('res',res)
    cv2.imshow('img',img)

    if cv2.waitKey(1) & 0xFF == 27:
        break
cv2.destroyAllWindows()

看!这就是变小后的结果

企鹅就是要小才可爱,好想摸一摸他的脑袋 -.-

还会变大的~

跟着我走,121,121,喂喂,你顺拐啦~

原图像给大家

qiebaobao.jpg
原图像就是这个可爱的小企鹅~

我们今天学习了扩展缩放,过几天要学习平移,大家想想平移是怎么实现的呢?我是Y,欢迎大家来我的博客做客,知道吗?我们已经坚持了将近2个月了,2个月的征战让我们愈加充满了斗志,我相信在将来,我们可以创造出让我们引以为傲的东西来,真正静下心来给自己的人生增添一份色彩。我们以助人为乐,小伙伴们还不速速上车~

发表评论

电子邮件地址不会被公开。 必填项已用*标注