美文网首页
opencv图像映射变换

opencv图像映射变换

作者: carry_xz | 来源:发表于2020-08-25 14:47 被阅读0次

三种图像变换方式

  • persperctive
  • affine
  • perspective
    findHomography与getPerspectiveTransform类似
    findHomography有两个返回值
img = cv2.imread(file_pth)
rows,cols,_ = img.shape
# 1.persperctive
pts1 = np.float32([[56,65],[368,52],[28,387],[389,390]])
pts2 = np.float32([[0,0],[300,0],[0,300],[300,300]])
matrix, _ = cv2.findHomography(pts1, pts2)
output = cv2.warpPerspective(img,matrix,(cols,rows))
print('matrix \n',matrix.shape)
print('matrix \n',matrix)

# 2.affine 只能用三个点
pts1 = np.float32([[56,65],[368,52],[28,387]])
pts2 = np.float32([[0,0],[300,0],[0,300]])
M_affine = cv2.getAffineTransform(pts1,pts2)
img_affine = cv2.warpAffine(img, M_affine, (cols, rows))
cv2.imwrite('aimg_affine.jpg',img_affine)

# 3.perspective 
pts1 = np.float32([[56,65],[368,52],[28,387],[389,390]])
pts2 = np.float32([[0,0],[300,0],[0,300],[300,300]])
M_perspective = cv2.getPerspectiveTransform(pts1,pts2)
img_perspective = cv2.warpPerspective(img, M_perspective, (cols, rows))
cv2.imwrite('aimg_perspective.jpg',img_perspective)
将一个点通过透视旋转矩阵映射到新的点
# 1.二维点后补1,转化为三维点,维度(3x1)
# 2.透视矩阵乘以三维点:M(3x3)xP(3x1)=P'(3x1)
# 3.P'=[x',y',k],前个数据除以最后一个数据得到转化后的坐标:P'=[x'/k,y'/k]
pt = np.array([[368,52,1]])
print('point shape:',pt.T.shape)
res = np.dot(M_perspective,pt.T)
pt_ = res[0:2]/res[2]
print('new point:',pt_)

截取图像

从图像上截取目标区域 (x,y,w,h),opencv 图像矩阵的0维是y(上下),1维是x(左右)

def coprImageByRec(img, bbox):
    left = bbox[0]
    top = bbox[1]
    width_ = bbox[2]
    high_ = bbox[3]
    img_ = img[top:top + high_, left:left + width_]
    return img_

图像缩放方式

cv2.resize(frame, (n_w, n_h),interpolation=cv2.INTER_LINEAR)
INTER_NEAREST  最近邻插值
INTER_LINEAR  双线性插值(默认设置)
INTER_AREA  使用像素区域关系进行重采样。
INTER_CUBIC  4x4像素邻域的双三次插值
INTER_LANCZOS4  8x8像素邻域的Lanczos插值

相关文章

  • opencv图像映射变换

    三种图像变换方式 persperctive affine perspectivefindHomography与ge...

  • OpenCV-8-图像分析

    1 摘要 上一章节介绍了OpenCV中可用的图像变换函数,这些技术本质上都是通过一种映射关系将图像转换为另一个图像...

  • 几何变换

    几何变换是指将一幅图像映射到另一副图像内的操作,根据映射关系的不同,有缩放、翻转、仿射变换、透视、重映射等。 1....

  • 图片处理-opencv-7.图像几何变换

    图像几何变换 1.图像仿射变换 图像仿射变换又称为图像仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一...

  • Python OpenCV库的常见应用2

    上一节:《Python OpenCV库的常见应用1》。本节介绍:图像几何变换。图像几何变换主要有: 放缩:调整图片...

  • 图像的几何变换1

    图像的几何变换又称为图像空间变换,它将一幅图像中的坐标位置映射到另一幅图像中的新生位置。几何变换不改变图像的像素值...

  • 图片处理-opencv-9.图像的灰度变换

    图像灰度线性变换 图像的灰度线性变换是通过建立灰度映射来调整原始图像的灰度,从而改善图像的质量,凸显图像的细节,提...

  • 几何变换之仿射---OpenCV-Python开发指南(12)

    仿射 在OpenCV中,仿射变换是指图像经过一系列的几何变换来实现的平移,旋转等多种操作。该变换能够保持图像的平直...

  • [Computer Vision]距离变换与OTSU二值化

    1 距离变换 以Opencv的distanceTransform距离变换为例。 1.1 梗概 计算图像中每一个非零...

  • 距离变换

    图像识别中距离变换的原理及作用详解,并附用OpenCV中的distanceTransform实现距离变换的代码!

网友评论

      本文标题:opencv图像映射变换

      本文链接:https://www.haomeiwen.com/subject/enznaqtx.html