opencv-api findHomography

Homography是一个3*3的变换矩阵,将一张图中的点映射到另一张图中对应的点

retval, mask = cv.findHomography( srcPoints, dstPoints[, method[, ransacReprojThreshold[, mask[, maxIters[, confidence]]]]] )

参数描述
srcPoints原始点
dstPoints目标点
retval变换矩阵
maskOptional output mask set by a robust method ( RANSAC or LMEDS ). Note that the input mask values are ignored.

参考文献:
https://blog.csdn.net/liuphahaha/article/details/50719275
https://www.learnopencv.com/homography-examples-using-opencv-python-c/
https://docs.opencv.org/master/d9/d0c/group__calib3d.html#ga4abc2ece9fab9398f2e560d53c8c9780

import cv2 as cv
import numpy as np

im_src = cv.imread("book1.jpg")  # 读取原图片
pts_src = np.array([[318, 256],[534, 372],[316, 670],[73, 473]], dtype=float)  # 原始图书的四个角的坐标


height, width = 400, 300  # 修改图的大小
im_dst = np.zeros((height, width, 3), dtype=np.uint8)  # 目标图片

pts_dst = np.empty((0, 2))  # 目标图片四个角的坐标
pts_dst = np.append(pts_dst, [(0, 0)], axis=0)  # 左上角
pts_dst = np.append(pts_dst, [(width - 1, 0)], axis=0)  # 右上角
pts_dst = np.append(pts_dst, [(width - 1, height - 1)], axis=0)  # 右下角
pts_dst = np.append(pts_dst, [(0, height - 1)], axis=0)  # 左下角


h, status = cv.findHomography(pts_src, pts_dst)  # 计算转换矩阵

im_out = cv.warpPerspective(im_src, h, (width,height))  # 转换图片

cv.imshow("1", im_src)
cv.imshow("2", im_out)

cv.waitKey(0)

原图片
在这里插入图片描述

转换后的图片
在这里插入图片描述

参考文献:
https://docs.opencv.org/master/da/d54/group__imgproc__transform.html#gaf73673a7e8e18ec6963e3774e6a94b87
https://www.learnopencv.com/homography-examples-using-opencv-python-c/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值