python在OpenCV里实现投影变换效果
前面学习了仿射变换,是经常使用到的变换,也很容易理解。在日常生活中,经常会遇到下面这种的情况:
仔细地观察比亚迪秦这台汽车的车牌,发现它拍照的角度不是垂直的方向,而是有一个角度,当要进行车牌识别的时候,发现字符是变形的,与电脑里比较的图片肯定有区别,因此识别不出来。这时怎么办呢?就需要经过一个投影变换才可以把车牌号纠正过来,才能进入识别过程。
好吧,到这里认识到投影变换的感性认识了,那么你又会继续考虑下一个问题,在软件里怎么样计算呢,难道还是使用仿射变换的矩阵。从这里看一下,前面闽A比较大,后面88比较小,说明原本平行的两边已经不平行了。仿射变换之后,平行的线还是平行的,因此这一点也是仿射变换与投影变换的区别。
投影变换只是保证同一条直线的点还是在同一条直线上,但不再保证平行了。因为投影变换是一个二维图像(车牌)经过一个三维变换,然后映射到另外一个二维空间,二维图像的二维空间与映射后的二维空间不一样,如果一样,就是仿射变换。投影变换也可以使用矩阵来进行描述,如下:
投影变换的矩阵是8个未知数,所以要四组不同的坐标点才可以计算出来,与前面的矩阵比较一下:
在OpenCV里是使用下面的公式计算:
因此只要构造了投影变换矩阵,其它的计算与仿射变换是一样的。下面通过例子来演示投影变换的功能:
#python 3.7.4,opencv4.1 #蔡军生 https://blog.csdn.net/caimouse/article/details/51749579 # import cv2 import numpy as np #图片的路径 imgname = "img1.jpg" #读取图片 image = cv2.imread(imgname, cv2.IMREAD_COLOR) #图片的高度和宽度 h,w = image.shape[:2] #从目标坐标计算出3X3的矩阵,然后调用warpPerspective执行 src = np.array([[0,0], [w-1,0], [0,h-1], [w-1,h-1]], np.float32) dst = np.array([[100,50], [w/2.0,50], [100,h-1], [w-1,h-1]], np.float32) A1 = cv2.getPerspectiveTransform(src, dst) d1 = cv2.warpPerspective(image, A1, (w, h), borderValue = 125) #显示操作之后的图片 cv2.imshow("d1",d1) #显示图像 cv2.imshow("image", image) #等待用户输入,然后删除所有窗口 cv2.waitKey(0) cv2.destroyAllWindows()
结果输出如下:
在这个例子里,先行构造四组坐标点,然后调用getPerspectiveTransform
函数计算投影变换矩阵,然后调用函数warpPerspective
来计算变换。如果要纠正图片,也是一样的,只要给出前后的四组的坐标值即可。
总结
以上所述是小编给大家介绍的python在OpenCV里实现投影变换效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
您可能感兴趣的文章:
- Python 在OpenCV里实现仿射变换―坐标变换效果
- openCV-python实现幻灯片渐变效果
- Python OpenCV实现鼠标画框效果
- Python opencv:实现与自己同框对话的视频特效
- [置顶] Python编程->混合编程(C++,python,opencv)实现
- python 调用摄像头,基于opencv 的人脸检测实现
- 【Python+OpenCV】实现检测场景内是否有物体移动,并进行人脸检测抓拍
- python + opencv 实现色弱測試游戏 自动点击游戏外挂
- Opencv——绘制各种几何形状——Python实现
- 《OpenCV3 计算机视觉 Python语言实现》——处理文件、摄像头和图形用户界面
- python结合opencv实现人脸检测与跟踪
- python通过opencv实现批量剪切图片
- 25行 Python 代码实现人脸检测——OpenCV 技术教程
- 机器学习实战笔记(二):使用 k-近邻算法改进约会网站的配对效果(Python3 实现)
- 在Python3.4中实现opencv3.1.0的安装配置
- opencv-python人脸检测简单实现
- python下实现人脸识别(opencv2)
- python实现弹窗祝福效果
- python下的opencv画矩形和文字注释的实现方法
- python+openCV利用摄像头实现人员活动检测