Halcon极坐标转换,图文解说,含点坐标的转换

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: Halcon极坐标转换,图文解说,含点坐标的转换

极坐标的用途


把圆形的图片转换为矩形,便于字符识别和关键区域的提取。



在halcon中对应的算子


(1)极坐标的展开:polar_trans_image_ext(Image : PolarTransImage : Row, Column, AngleStart, AngleEnd, RadiusStart, RadiusEnd, Width, Height, Interpolation : )


(2)极坐标的逆变换:polar_trans_image_inv(PolarImage : XYTransImage : Row, Column, AngleStart, AngleEnd, RadiusStart, RadiusEnd, Width, Height, Interpolation : )


其中:Row, Column分别为圆环的中心行列坐标, AngleStart, AngleEnd为起始和终止的角度值,RadiusStart, RadiusEnd为起始和终止的半径角度值, Width, Height为输出图片的宽和高。


(3)点坐标的逆变换:polar_trans_contour_xld_inv(PolarContour : XYTransContour : Row, Column, AngleStart, AngleEnd, RadiusStart, RadiusEnd, WidthIn, HeightIn, Width, Height : )



我写的案例


dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
read_image (Image, '极坐标2.png')
get_image_size (Image, Width, Height)
draw_circle (WindowHandle, Row1, Column1, Radius)
gen_circle (Circle, Row1, Column1, Radius)
reduce_domain (Image, Circle, ImageReduced)
PI:=3.1415926
*逆时针,从0度到360度,转一圈
polar_trans_image_ext (ImageReduced, PolarTransImage, Row1, Column1, 0, 2*PI, 0, Radius, Width, Height, 'nearest_neighbor')
write_image (PolarTransImage, 'jpeg 100', 0, 'd:\\1.jpg')
*长和宽必须是原图像的长和宽,否则尺寸太小的话,图像容易超出,导致一片黑,看不到转换结果
polar_trans_image_inv (PolarTransImage, XYTransImage, Row1, Column1, 0, 2*PI, 0, Radius, Width, Height, 'nearest_neighbor')
write_image (XYTransImage, 'jpeg 100', 0, 'd:\\2.jpg')
*点坐标的转换
*Contour的原坐标是基于极坐标系,我们把它转到笛卡尔坐标系
gen_contour_polygon_xld (Contour, [155.568, 137.404, 30], [47.4712, 116.479, 260])
polar_trans_contour_xld_inv (Contour, XYTransContour, Row1, Column1, 0, 2*PI, 0, Radius, Width, Height, Width, Height)
stop()

变换前:

image.png



变换后:

image.png



逆变换:会回原样



官方例程


ocr_cd_print_polar_trans.hdev


create_shape_model_xld.hdev


circular_barcode.hdev



参考文献


https://blog.csdn.net/qq_32939413/article/details/104092627


https://www.pianshen.com/article/3946344220/


相关实践学习
跟我学:如何一键安装部署 PolarDB-X
《PolarDB-X 动手实践》系列第一期,体验如何一键安装部署 PolarDB-X。
相关文章
|
定位技术
Threejs实现绘制地球,地理位置标注、经纬度转换世界坐标threejs坐标
Threejs实现绘制地球,地理位置标注、经纬度转换世界坐标threejs坐标
1107 0
Threejs实现绘制地球,地理位置标注、经纬度转换世界坐标threejs坐标
|
24天前
|
图形学
【Unity的HDRP下ShaderGraph实现权重缩放全息投影_案例分享(内附源码)】
【Unity的HDRP下ShaderGraph实现权重缩放全息投影_案例分享(内附源码)】
|
5月前
|
数据可视化 定位技术 开发者
黑白或彩色线稿地图设计定制装饰画中线条轮廓素材底图获取方法合集
黑白或彩色线稿地图设计定制装饰画中线条轮廓素材底图获取方法合集
|
9月前
|
计算机视觉 C++ Python
Python相片图片编辑工具-翻转旋转亮度磨皮裁剪添加文字
这篇博客针对<<Python相片图片编辑工具-翻转旋转亮度磨皮裁剪添加文字>>编写代码,代码整洁,规则,易读。 学习与应用推荐首选。
73 0
|
10月前
|
编解码
使用遮罩提取图像中感兴趣的区域
使用遮罩隔离感兴趣区域 (ROI) 来有效地处理被阻止的图像。 某些大图像源仅在图像的一小部分中具有有意义的数据。可以通过将处理限制为包含有意义数据的 ROI 来缩短总处理时间。使用掩码定义投资回报率。蒙版是一种逻辑图像,其中像素表示投资回报率。
83 1
|
11月前
|
数据可视化 C++
【影像配准】配准之棋盘网格图(镶嵌图像)(附有 C++ 代码)
【影像配准】配准之棋盘网格图(镶嵌图像)(附有 C++ 代码)
OpenMV学习笔记(3) 获取图像的颜色信息
在图像识别中,如果想知道一个区域的颜色信息,我们可以使用统计信息——Statistics
122 0
|
数据可视化
【视觉基础篇】15 # 如何用极坐标系绘制有趣图案?
【视觉基础篇】15 # 如何用极坐标系绘制有趣图案?
130 0
【视觉基础篇】15 # 如何用极坐标系绘制有趣图案?
|
前端开发 数据可视化
【视觉基础篇】13 # 如何给简单的图案添加纹理和复杂滤镜?
【视觉基础篇】13 # 如何给简单的图案添加纹理和复杂滤镜?
65 0
【视觉基础篇】13 # 如何给简单的图案添加纹理和复杂滤镜?
【视觉高级篇】19 # 如何用着色器实现像素动画?2
【视觉高级篇】19 # 如何用着色器实现像素动画?
61 0
【视觉高级篇】19 # 如何用着色器实现像素动画?2