1. cv2.imread 读取图片
2. 定义四对点
方法1:
src_points = np.array([[0, 0], [771, 0], [771, 748], [0, 748]])
dst_points = np.array([[0, 0], [300, 0], [300, 300], [0, 300]])
注意:点对的第一个数字是列数,第二个数字是行数,从图片序列从0开始
方法2:
src_points = np.float32([[0, 0], [771, 0], [771, 748], [0, 748]]) dst_points = np.float32([[0, 0], [300, 0], [300, 300], [0, 300]])
3. 计算转换矩阵
方法1:
H, _ = cv2.findHomography(src_points, dst_points)
方法2:
H = cv2.getPerspectiveTransform(src_points, dst_points)
2 和 3 是相对应的,float 存在的意义是什么,像素点不都是整数吗?
4. 实现透视变换转换
processed = cv2.warpPerspective(img, H, (img_width, img_height))
第三个参数是所得到的图片的大小,列数在前,行数在后
5. 如何将变换后的图像加在已有图像上呢?
直接加?
img_dst = img + processed
这样加像素相加,肯定不可以。
//在目的图像上中断几何区域
fillConvexPoly(im_dst, pts_dst, 4, Scalar(0), CV_AA);
//把变形后的几何图像添加到目的图像上
im_dst = im_dst + im_temp;
https://blog.csdn.net/pnan222/article/details/78616249