【OpenCV 4开发详解】图像极坐标变换
本文首发于“小白学视觉”微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究!
经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍《OpenCV 4开发详解》。为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通,提前在公众号上连载部分内容,请持续关注小白。 |
极坐标变换就是将图像在直角坐标系与极坐标系中互相变换,形式如图3-26所示,它可以将一圆形图像变换成一个矩形图像,常用于处理钟表、圆盘等图像。圆形图案边缘上的文字经过及坐标变换后可以垂直的排列在新图像的边缘,便于对文字的识别和检测。
图3-26 极坐标变换示意图
OpenCV 4中提供了warpPolar()函数用于实现图像的极坐标变换,该函数的函数原型在代码清单3-38中给出。
代码清单3-38 warpPolar()函数原型
1. void cv::warpPolar(InputArray src,
2. OutputArray dst,
3. Size dsize,
4. Point2f center,
5. double maxRadius,
6. int flags
7. )
- src:原图像,可以是灰度图像或者彩色图像。
- dst:极坐标变换后输出图像,与原图像具有相同的数据类型和通道数。
- dsize:目标图像大小。
- center:极坐标变换时极坐标的原点坐标。
- maxRadius:变换时边界圆的半径,它也决定了逆变换时的比例参数。
- flags: 插值方法与极坐标映射方法标志,插值方法在表3-3中给出,极坐标映射方法在表3-7给出,两个方法之间通过“+”或者“|”号进行连接。
该函数实现了图像极坐标变换和半对数极坐标变换。函数第一个参数是需要进行极坐标变换的原始图像,该图像可以是灰度图像也可以是彩色图像。第二个参数是变换后的输出图像,与输入图像具有相同的数据类型和通道数。第三个参数是变换后图像的大小。第四个参数是极坐标变换时极坐标原点在原图像中的位置,该参数同样适用于逆变换中。第五个参数是变换时边界圆的半径,它也决定了逆变换时的比例参数。最后一个参数是变换方法的选择标志,插值方法在表3-3中给出,极坐标映射方法在表3-7给出,两个方法之间通过“+”或者“|”号进行连接。
表3-7 warpPolar()函数极坐标映射方法标志
标志参数 | 作用 |
---|---|
WARP_POLAR_LINEAR | 极坐标变换 |
WARP_POLAR_LOG | 半对数极坐标变换 |
WARP_INVERSE_MAP | 逆变换 |
该函数可以对图像进行极坐标正变换也可以进行逆变换,关键在于最后一个参数如何选择。为了了解图像极坐标变换的功能以及相关函数的使用,在代码清单3-39给出了对表盘图像进行极坐标正变换和逆变换的示例程序。程序中选取表盘的中心作为极坐标的原点,变换的结果在图3-27给出。
代码清单3-39 mywarpPolar.cpp图像极坐标变换
1. #include <opencv2\opencv.hpp>
2. #include <iostream>
3.
4. using namespace std;
5. using namespace cv;
6.
7. int main()
8. {9. Mat img = imread("dial.png");
10. if (!img.data)
11. {12. cout << "请检查图像文件名称是否正确" << endl;
13. return -1;
14. }
15.
16. Mat img1, img2;
17. Point2f center = Point2f(img.cols / 2, img.rows/2); //极坐标在图像中的原点
18. //正极坐标变换
19. warpPolar(img, img1, Size(300,600), center, center.x,
20. INTER_LINEAR + WARP_POLAR_LINEAR);
21. //逆极坐标变换
22. warpPolar(img1, img2, Size(img.rows,img.cols), center, center.x,
23. INTER_LINEAR + WARP_POLAR_LINEAR + WARP_INVERSE_MAP);
24.
25. imshow("原表盘图", img);
26. imshow("表盘极坐标变换结果", img1);
27. imshow("逆变换结果", img2);
28. waitKey(0);
29. return 0;
30. }
图3-27 mywarpPolar.cpp程序中极坐标正变换和逆变换的结果
OpenCV 4开发详解 |
往期推荐 |
---|
【OpenCV 4开发详解】Windows系统中安装OpenCV 4 |
【OpenCV 4开发详解】Ubuntu系统中安装OpenCV 4 |
【OpenCV 4开发详解】opencv_contrib扩展模块的安装 |
【OpenCV 4开发详解】Image Watch插件的使用 |
【OpenCV 4开发详解】安装过程中问题解决方案 |
【OpenCV 4开发详解】了解OpenCV的模块架构 |
【OpenCV 4开发详解】Mat类介绍 |
【OpenCV 4开发详解】Mat类构造与赋值 |
【OpenCV 4开发详解】4种读取Mat类元素的的方法 |
【OpenCV 4开发详解】图像的读取与显示 |
【OpenCV 4开发详解】视频加载与摄像头调用 |
【OpenCV 4开发详解】图像与视频的保存 |
【OpenCV 4开发详解】保存和读取XML和YMAL文件 |
【OpenCV 4开发详解】颜色模型与转换 |
【OpenCV 4开发详解】多通道分离与合并 |
【OpenCV 4开发详解】图像像素统计 |
【OpenCV 4开发详解】两图像间的像素操作 |
【OpenCV 4开发详解】图像二值化 |
【OpenCV 4开发详解】图像LUT查找表 |
【OpenCV 4开发详解】图像连接 |
【OpenCV 4开发详解】图像仿射变换 |
【OpenCV 4开发详解】图像透视变换 |
经过几个月的努力,市面上第一本OpenCV 4入门书籍《OpenCV 4开发详解》将春节后由人民邮电出版社发行。如果小伙伴觉得内容有帮助,希望到时候多多支持! |
关注小白的小伙伴可以提前看到书中的内容,我们创建了学习交流群,欢迎各位小伙伴添加小白微信加入交流群,添加小白时请备注“学习OpenCV 4”。 |
【OpenCV 4开发详解】图像极坐标变换相关推荐
- 【OpenCV 4开发详解】图像距离变换
本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...
- 【OpenCV 4开发详解】图像膨胀
本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...
- 【OpenCV 4开发详解】图像腐蚀
本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...
- 【OpenCV 4开发详解】图像连通域分析
本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...
- 【OpenCV 4开发详解】图像噪声的种类与生成
本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...
- 【OpenCV 4开发详解】图像卷积
本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...
- 【OpenCV 4开发详解】图像直方图绘制
本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...
- 【OpenCV 4开发详解】图像金字塔
本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...
- 【OpenCV 4开发详解】图像上绘制几何图形
本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...
最新文章
- 【Socket网络编程】3.字节序转换函数htons、htonl ,地址转换函数inet_ntoa、inet_ntop、inet_pton、inet_addr
- 转换php script类型,javascript如何实现值的类型转换
- VS Code Remote 发布!开启远程开发新时代
- python对象的复制问题
- 浪潮n系列服务器指示灯_中国服务器市场,浪潮跑出,联想和华为出现衰退
- 计算机操作系统|汤小丹|第四版|习题答案(三)
- ffmpeg转换进度计算公式
- 基于php工程项目管理系统——计算机毕业设计
- 想加薪怎么和领导谈?学会这四招轻松涨薪
- Mac下如何实现自动切换输入法
- 2021年转行软件测试能有前景吗?
- 记一次血淋淋的MySQL崩溃修复案例
- 学完计算机专业英语感受,计算机专业英语感想
- java电影定票系统_Java实现电影院订票系统代码
- 计算机音乐学院,乐与录音艺术学院学生在中国大学生计算机设计大赛(计算机音乐创作类)中喜获佳绩...
- 计算机二级考asc2码吗,2017年计算机二级考试ACCESS重要知识点
- “技术让生活更便捷”之腾讯位置服务JavaScript API2.0前端定位和位置标注的开发实录
- 雷诺手表怎么换电池?雷诺手表更换电池的方法
- JavaScript中slice()、splice()、split()、join()、unshift()、push()
- C++探索之旅 | 第一部分第一课:什么是C++
热门文章
- 大疆、港科大联手!双目3D目标检测实验效果大放送 | CVPR 2019
- 整合PyTorch 0.4和Caffe 2,PyTorch 1.0能挑战TensorFlow吗?
- TensorFlow AI 新品更易用!联手NVIDIA,支持Swift和JavaScript
- Google发布机器学习术语表 (中英对照)
- 某团技术拷问:ArrayList 和 LinkedList 哪个更占空间?
- Redis 生产架构选型解决方案
- ThreadLocalRandom 安全吗
- 为什么 Linux 需要 Swapping
- 一文搞懂 CountDownLatch 用法和源码!
- 我是如何根据豆瓣api来理解Restful API设计的