前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【从零学习OpenCV 4】极坐标变换

【从零学习OpenCV 4】极坐标变换

作者头像
小白学视觉
发布于 2019-12-13 03:10:03
发布于 2019-12-13 03:10:03
95200
代码可运行
举报
运行总次数:0
代码可运行

经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍《从零学习OpenCV 4》。为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通,提前在公众号上连载部分内容,请持续关注小白。

极坐标变换就是将图像在直角坐标系与极坐标系中互相变换,形式如图3-26所示,它可以将一圆形图像变换成一个矩形图像,常用于处理钟表、圆盘等图像。圆形图案边缘上的文字经过及坐标变换后可以垂直的排列在新图像的边缘,便于对文字的识别和检测。

图3-26 极坐标变换示意图

OpenCV 4中提供了warpPolar()函数用于实现图像的极坐标变换,该函数的函数原型在代码清单3-38中给出。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
代码清单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给出。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
代码清单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程序中极坐标正变换和逆变换的结果

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小白学视觉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
OpenCV极坐标变换函数warpPolar的使用
前阵子在做方案时,得了几张骨钉的图片,骨科耗材批号效期管理一直是比较麻烦的,贴RFID标签成本太高,所以一般考虑还是OCR的识别比较好,因为本身骨钉的字符是按圆印上去的,直接截取图片进行OCR没法识别,需要经过图像处理后再识别,所以这篇就是学习一下OpenCV的极坐标变换函数。
Vaccae
2023/12/14
4880
OpenCV极坐标变换函数warpPolar的使用
对数极坐标变换用于相位、尺度搜索
对于二维图形,Log-polar 转换表示从笛卡尔坐标到极坐标的变化,广泛应用在计算机视觉中。此函数模仿人类视网膜中央凹视力,并且对于目标跟踪等可用于快速尺度和旋转变换不变模板匹配。
为为为什么
2022/08/09
1.4K0
对数极坐标变换用于相位、尺度搜索
OpenCV消除高亮illuminationChange函数的使用
上一篇《OpenCV极坐标变换函数warpPolar的使用》中介绍了极坐标变换的使用,文中提到过因为手机拍的照片,部分地方反光厉害。OpenCV本身也有一个消除高亮的函数,今天这篇就是来了解一下消除高亮函数的使用,就结果来说,有效果,但不多。
Vaccae
2023/12/19
1.7K0
OpenCV消除高亮illuminationChange函数的使用
OpenCV 图像变换之 —— 通用变换
我们目前所看到的仿射变换和透射变换是一些更为一般的处理过程中特殊的例子。本质上,这两种变换有着相似的特性:它们把源图像的像素从一个地方映射到目标图像的另一个地方。事实上,其他一些操作也有着相同的结构。本文学习一些类似的变换,而后学习如何让OpenCV实现自己的映射变换。
为为为什么
2022/08/09
3.2K0
OpenCV 图像变换之 —— 通用变换
实战 | OpenCV+OCR实现弧形文字识别实例(详细步骤 + 代码)
【1】扩充图像。由于这里的只有部分圆弧,为方便后续检测圆和ROI截取,我们先将原图扩大:
Color Space
2024/05/22
1.2K0
实战 | OpenCV+OCR实现弧形文字识别实例(详细步骤 + 代码)
【从零学习OpenCV 4】图像仿射变换
经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍《从零学习OpenCV 4》。为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通,提前在公众号上连载部分内容,请持续关注小白。
小白学视觉
2019/11/30
9440
【从零学习OpenCV 4】图像透视变换
经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍《从零学习OpenCV 4》。为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通,提前在公众号上连载部分内容,请持续关注小白。
小白学视觉
2019/12/13
2.9K0
Halcon缺陷检测实例转OpenCV实现(六) 瓶口缺陷检测
Halcon中对应的例子为inspect_bottle_mouth.hdev,用于检测酒瓶瓶口是否出现破损等缺陷情形,检测效果如下:
Color Space
2021/01/08
3.9K0
实战 | OpenCV+OCR实现环形文字识别实例(详细步骤 + 代码)
光学字符识别(OCR)场景中有很多特殊情况,比如噪声、脏污、倾斜、变形等,都会对识别造成影响。环形文字也是其中一种,我们通常不能直接识别它们,而是先将文字转换到水平方向,再做识别。如下图所示:
Color Space
2022/05/25
2.8K0
实战 | OpenCV+OCR实现环形文字识别实例(详细步骤 + 代码)
10、图像的几何变换——平移、镜像、缩放、旋转、仿射变换 OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(1)OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(2)数字图像
  图像几何变换又称为图像空间变换,它将一副图像中的坐标位置映射到另一幅图像中的新坐标位置。我们学习几何变换就是确定这种空间映射关系,以及映射过程中的变化参数。图像的几何变换改变了像素的空间位置,建立一种原图像像素与变换后图像像素之间的映射关系,通过这种映射关系能够实现下面两种计算:
vv彭
2020/10/27
3.9K0
10、图像的几何变换——平移、镜像、缩放、旋转、仿射变换
    


OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(1)OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(2)数字图像
OpenCV 透视变换
透视变换是将图像从一个视平面投影到另外一个视平面的过程,所以透视变换也被称为投影映射(Projection Mapping)。在图像的仿射变换中需要变换矩阵是一个2x3的两维平面变换矩阵,而透视变换本质上空间立体三维变换,根据其次坐标方差,要把三维坐标投影到另外一个视平面,就需要一个完全不同的变换矩阵M,所以这个是透视变换跟OpenCV中几何仿射变换最大的不同。变换公式为:
chaibubble
2022/05/07
6730
OpenCV 透视变换
常用数据增广方法,解决数据单一问题
寄语:本文将对传统图像算法的数据增广方式进行学习,以最常用的平移和旋转为例,帮助大家梳理几何变换的概念和应用,并对其在OpenCV的框架下进行了实现。
Datawhale
2020/05/29
2.3K0
【从零学习OpenCV 4】轮廓外接多边形
由于噪声和光照的影响,物体的轮廓会出现不规则的形状,根据不规则的轮廓形状不利于对图像内容进行分析,此时需要将物体的轮廓拟合成规则的几何形状,根据需求可以将图像轮廓拟合成矩形、多边形等。本小节将介绍OpenCV 4中提供的轮廓外接多边形函数,实现图像中轮廓的形状拟合。
小白学视觉
2020/02/20
3.9K0
【从零学习OpenCV 4】轮廓外接多边形
图像校正
dst=cv2.linearPolar(src, center, maxRadius, flags)
裴来凡
2022/05/28
6520
图像校正
【走进OpenCV】重映射与仿射变换
其中的 f 就是映射方式,也就说,像素点在另一个图像中的位置是由 f 来计算的。
小白学视觉
2019/10/24
1.2K0
OpenCV:霍夫直线变换和霍夫圆变换
如果可以用数学形式表示形状,则霍夫变换是检测任何形状的一种比较流行的技术。即使形状有些破损或变形,也可以检测出形状。本文将讲解如何将它何作用于一条线。
用户3578099
2023/09/01
7100
OpenCV:霍夫直线变换和霍夫圆变换
【opencv实践】仿射变换和透视变换
上面这副图就是我们今天要处理的了,我们想把它从拍照视角变成鸟瞰图,这是机器人导航中的常用手段,以便在该平面上进行规划和导航。
周旋
2020/06/04
5.7K1
OpenCV 几何变换-图像旋转
OpenCV提供了warpAffine函数实现图片仿射变换功能,我们可以利用这个函数实现图像旋转,函数原型为:
chaibubble
2022/05/07
2740
OpenCV 几何变换-图像旋转
OpenCV基于Landmark实现人脸交换
川剧是中国最知名的戏曲剧种之一,变脸是川剧表演的特技之一,在对象传承上有着严格的师门派别。有点扯远啦,回来!其实主要是我们今天要用OpenCV干的事情跟这个有点关系,OpenCV基于Landmark实现人脸关键点提取,对结果善加利用可以实现人脸交换,对特定对象施加变脸术。OpenCV开发者不学川剧也一样可以给各种人变脸,当然前提是会写代码,会做OpenCV。首先简单说一下原理与流程。
OpenCV学堂
2018/07/26
1.3K0
OpenCV基于Landmark实现人脸交换
【从零学习OpenCV 4】图像像素统计
经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍《从零学习OpenCV 4》。为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通,提前在公众号上连载部分内容,请持续关注小白。
小白学视觉
2019/11/22
1.9K0
推荐阅读
相关推荐
OpenCV极坐标变换函数warpPolar的使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验