warpPerspective

前言:
使用过的同学知道app——扫描xx王有个功能是将图片转化pdf,通过将手机相机拍到的图片转换为pdf,这款app能将手机拍到的照片多余的空白部分减去。本文讲述这个功能实现的部分原理。即实现本文的两张图片变换。
参考链接:https://zhuanlan.zhihu.com/p/37023649

  1. 转化的图片如下,将上面的图片转化为下图
    warpPerspective
    warpPerspective

  2. 本次使用的环境

system: win11
software: opencv-python == 3.4.2.16
opencv-contrib-python == 3.4.2.16
environment:python3.6

3.需要的准备工作,找到原始图片我们需要变换的四个坐标
即下图四个坐标
warpPerspective4.
代码如下

import numpy as np
from cv2 import cv2

if __name__ == '__main__':
    # 读取原始图片
    img1_path = r"ori.png"
    img1 = cv2.imread(img1_path)
    # 获得图片的高度与宽度
    height, weight = img1.shape[:2]

    # 定义我们要透视变换的点,即上面图的四个点 分别是原图的 左上 右上 左下 右下, 注意需要将四个点的坐标转换成float32
    points_ori = np.array([[13, 14], [312, 8], [24, 393], [304, 410]]).astype(np.float32)
    # 定义我们将图片展平的点,本次展平为一张图片
    points_transform = np.array([[0, 0], [300, 0], [0, 380], [300, 380]]).astype(np.float32)

    # 计算得到转化矩阵  输入的参数分别是原图像的四边形坐标 变换后图片的四边形坐标
    M = cv2.getPerspectiveTransform(points_ori, points_transform)

    #得到透视变换的图片
    img_ = cv2.warpPerspective(img1,M,(300,380))
	#将图片保存即可得到2图
上一篇:Numpy-数组的全通用函数


下一篇:主成分分析详解和应用(python/R)