更杂乱的仿射改动

上篇博文阐明了2种最基本的仿射转化:平移与旋转。但OpenCV还给咱们供应了函数cv2.getAffineTransform()来生成仿射函数cv2.warpAffine()所运用的windows怎样激活转化矩阵M。

该函数的定义如下:

def getAffopencv和openmv的差异ineTransform(src, dst):

src:代表输入图画的三个点坐标

dst:代表输出图画的三个点坐标

用过PS的都知道,咱们在PS中运用opencv装置教程快捷键Ctrl+T就可以随意拉扯图画,由于图画上下左右各有四个点担任定位。而src中opencv教程的3个坐标与PS完全一致,分别为左上角,右上角,左下角,只是少了一个点,但定位绰绰有余,当然映射后只能是平行四边形,由于缺失一个坐标。

下面,windows是什么意思咱们来随意定位图画,并结束拉扯作用:

import cv2
import numpy as np
img = cvwindows10激活密钥2.imread("4.jpg")
rows,cols,ch = img.opencv-pythonshape
p1=np.float32([[0,0],[cols-1,0],[0,rowsopencv和openmv的差异-1]矩阵的秩])
p2=np.float32([[0,rows*0.33],[cols*0.85,rows*0.25],[cols*0.15,rows*0.7]])
M = cv2.getAffineTransform(pwindows7激活密钥1,p2)
move_img = cv2.warpAffine(img, M, (cols, rows))
cv2.imshow("img", img)
cv2.imshow("move_img", move_img)
cwindows7激活密钥v2.waitKey()
cv2.d矩阵的乘法运算estroyopencv入门要学多久AllWindows()

作业之后OpenCV,作用如下图所示:
OpenCV(13)---几许改换之透视
p1是原始图画的坐标,这儿稍微有点转化。opencvsharp原图坐标就是左上角[0,0],右上角[cols,0],左下角[0,rows]。转化后的坐标左上角[0,rows0.33],右上角[cols0.85,rows0.25],左下角[cols0.opencv装置教程15,rows*0.7]。

透视

之所以要阐明上面的平行四边形仿射,是由于咱们的透视是任意四边形,经过上面的代码咱们更简单了解透视的概念。

在OpenCV中,透视转化经过函数cv2.warpPwindows10erspective()结束,该函数的定义如下:

def warpPerspective(src, M, dsize, dst=None, flags=None, borderMode=None, borderValue=Non矩阵等价e):

src:要透视的原始图画

M:转化透视图画的3*3转化矩阵

dsize:代表输出图画的标准巨细

flags,borderMode,borderValu矩阵乘法e三个参数与前文相似矩阵的迹这儿不多做介绍。

下面,咱们将上面的图画转化成任意四边形,具体代码如下所示:

import cv2
import numpy as np
img = cv2.im矩阵的迹reopencvsharpad("4.jpg")
rows, cols, ch = img.shape
p1 = np.float32([[0, 0], [cols, 0], [0, rows], [cols, rows]])
p2 = np.float32([[0, rows * 0.33], [cols * 0.85, rows * 0.25], [cols * 0.15, rows * 0.7], [cols * 0.85, rows * 0.85]])
M = cv2.getopencv和openmv的差异PerspectiveTransform(p1, p2)
move_img = cv2.warpPerspective(img, M, (colwindows10激活密钥s, rows))
cv2.imshow("矩阵img", img)
cv2.imshow("move_img", move_img)
cv2.waitKey()
cv2.destroyAllWindows()

透视函数warpPerspective经过OpenCVgetPerspectiveTransfWindowsorm获得转化矩阵。作业之后,作用如opencv怎样装置下所示:
OpenCV(13)---几许改换之透视