网站怎么添加栏目,河南推广网站的公司,金融集团网站模板,开发公司未售房产交的取暖费应走什么科目由于照相机硬件设备本身的误差#xff0c;可能会导致镜头畸变#xff0c;从而导致照相机拍摄到的照片产生失真现象#xff0c;此时可以通过透视变换去适当的校正。
大概的思路#xff1a;在原图像上确定四个点#xff0c;然后再新图像上也确定四个点#xff0c;通过warp…由于照相机硬件设备本身的误差可能会导致镜头畸变从而导致照相机拍摄到的照片产生失真现象此时可以通过透视变换去适当的校正。
大概的思路在原图像上确定四个点然后再新图像上也确定四个点通过warpMatrix方法确定出对应的函数关系从而将图像进行校正。
import cv2
import numpy as npimg cv2.imread(beyond.png)
result3 img.copy()#src和dst的输入并不是图像而是图像对应的顶点坐标
src np.float32([[664,423],[1197,1144],[245,785],[709,1307]])#这个是你要截取物体的四个顶点坐标这四个顶点需要知道
dst np.float32([[0,0],[883,0],[0,560],[883,560]])#其实就是要校正物体的四个顶点坐标也就是知道日历的长和高即可
print(img.shape)#看一下原图片的大小
#结果为(1706, 1279, 3)#生成透视变换矩阵进行透视变换
m cv2.getPerspectiveTransform(src,dst)#得到映射关系函数
print(warpMatrix:)
print(m)
#结果为warpMatrix:
[[ 5.53592476e-01 6.40760353e-01 -6.38627034e02][-6.16322870e-01 4.55617322e-01 2.16512258e02][ 2.54107793e-04 -3.90561502e-04 1.00000000e00]]
result cv2.warpPerspective(result3,m,(883,560))
cv2.imshow(src,img)
cv2.imshow(result,result)
cv2.waitKey(0)原图
日历的坐标我是用ps里面的标尺看的不一定特别精准。 日历四个顶点的位置在图像上的像素坐标为(行x轴列y轴)[664,423],[1197,1144],[245,785],[709,1307] 日历的长为883像素高为560像素
运行后结果为
(原图片太大放不下截取了一部分)