Opencv使用笔记

1.cv2.findContours(mask, mode=CV_RETR_LIST, method=cv2.CHAIN_APPROX_SIMPLE)

  opencv 2.x, 返回,contours, hierachy; opencv 3.x 返回 image, contours, hierachy, 

contours是个list,每个是一个shape为(nx2)的轮廓,n为轮廓点个数2为x,y值,

2.warpAffine 使用三个点,如参数点数多与3个,那么使用前三个点;

matrix = cv2.getAffineTransform(points1,points2) #points1.shape:3x2

output = cv2.warpAffine(img,matrix,(cols,rows))

 

warpPerspective使用4个点

matrix = cv2.getPerspectiveTransform(points1,points2) # poits1.shape=4x2, 将四个点组成的平面转换成另四个点组成的一个平面

output = cv2.warpPerspective(img, matrix, (cols, rows))

不管是,warp,还是perspective变换,本质都是采样,是找目标图i,j位置对应的原图位置,没有对像素值进行运算。目标图i,j位置,在原图的哪个位置:Matrix * [i, j, 1]=[u,v,w],那么目标图中i,j位置的像素,就从u/w, v/w的原图位置,直接取像素,不进行任何像素值得变换。

3.warpPerspective变换后,如何变回去?

  对于目标图x,y如何变换回去,得到对应原图中的位置:

 M= 问题2中的Matrix

   w = M30*x + M31*y + M32

   u=x*w

  v = y*w

  所以: 原图i,j位置, [i,j,1] = inverse(Matrix) * [u, v, w]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值