OpenCV 图形API(16)将极坐标(magnitude 和 angle)转换为笛卡尔坐标(x 和 y)函数polarToCart()

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

描述

计算二维向量的 x 和 y 坐标。

polarToCart 函数根据 magnitude 和 angle 的对应元素表示的每个二维向量,计算其笛卡尔坐标:
x ( I ) = magnitude ( I ) cos ⁡ ( angle ( I ) ) y ( I ) = magnitude ( I ) sin ⁡ ( angle ( I ) ) \begin{array}{l} \texttt{x} (I) = \texttt{magnitude} (I) \cos ( \texttt{angle} (I)) \\ \texttt{y} (I) = \texttt{magnitude} (I) \sin ( \texttt{angle} (I)) \\ \end{array} x(I)=magnitude(I)cos(angle(I))y(I)=magnitude(I)sin(angle(I))

估计坐标的相对精度约为 1e-6。

第一个输出是二维向量 x 坐标的矩阵。第二个输出是二维向量 y 坐标的矩阵。两个输出矩阵必须与输入矩阵具有相同的大小和深度。

注意:

该函数的文本ID是 "org.opencv.core.math.polarToCart"

函数原型

cpp 复制代码
std::tuple<GMat, GMat> cv::gapi::polarToCart 
(
 	const GMat &  	magnitude,
	const GMat &  	angle,
	bool  	angleInDegrees = false 
) 		

参数

  • 参数magnitude: 输入浮点型 CV_32FC1 矩阵 (1xN),表示二维向量的大小(或长度)。
  • 参数angle: 输入浮点型 CV_32FC1 矩阵 (1xN),表示二维向量的角度;角度可以以度或弧度表示,具体取决于 angleInDegrees 参数。
  • 参数angleInDegrees: 如果为 true,则输入的角度以度为单位;否则,角度以弧度为单位。

代码示例

cpp 复制代码
#include <opencv2/opencv.hpp>
#include <opencv2/gapi.hpp>
#include <opencv2/gapi/core.hpp>
#include <tuple>

int main() {
    // 创建示例输入矩阵
    cv::Mat magnitude = (cv::Mat_<float>(2, 2) << 1.f, 2.f,
                                                 3.f, 4.f);
    cv::Mat angle = (cv::Mat_<float>(2, 2) << 0.f, 90.f,
                                               180.f, 270.f); // 角度以度为单位

    // 定义G-API计算图
    cv::GComputation polarToCartComp([](){
        cv::GMat inMagnitude, inAngle;
        auto xy = cv::gapi::polarToCart(inMagnitude, inAngle, true); // 使用度作为角度单位
        return cv::GComputation(cv::GIn(inMagnitude, inAngle), cv::GOut(std::get<0>(xy), std::get<1>(xy)));
    });

    // 输出矩阵
    cv::Mat x, y;

    // 执行计算图
    polarToCartComp.apply(cv::gin(magnitude, angle), cv::gout(x, y));

    // 打印结果
    std::cout << "X components: \n" << x << std::endl;
    std::cout << "Y components: \n" << y << std::endl;

    return 0;
}

运行结果

bash 复制代码
X components: 
[1, 0;
 -3, 4.8984e-16]
Y components: 
[0, 2;
 3.6738e-16, -4]
相关推荐
摇滚侠4 小时前
AI 编程工具 《TRAE 官方手册》阅读笔记 AI 编程核心 上
人工智能·笔记
一个王同学4 小时前
从零到一 | CV转多模态大模型 | week19 | 基于 FastAPI 和 vLLM 的多模态大模型部署
人工智能·深度学习·计算机视觉·fastapi·改行学it·vllm
m沐沐5 小时前
【深度学习】YOLOv2目标检测算法——改进点、网络结构与聚类先验框解析
人工智能·pytorch·深度学习·算法·yolo·目标检测·transformer
企业老板ai培训5 小时前
破解中小企业AI变现难:2026年企业AI培训与陪跑行业趋势深度报告,为何从‘陪跑’到‘变现’才是关键?
大数据·人工智能
神奇霸王龙6 小时前
国产音乐视频 Prompt 三段式屠夫榜:5 个国产视频模型实测对比
人工智能·ai·prompt·音视频·agent·ai编程·agi
OpenCSG6 小时前
Hugging Face遭遇AI Agent攻击:AI资产管理正在进入新阶段
人工智能·大模型
神奇霸王龙6 小时前
AI视频Prompt结构化实战指南:可灵/万相/豆包
人工智能·ai·prompt·aigc·音视频·ai编程
aax12134536 小时前
VOC 集群治理工程实操|美丽蓝天绿岛项目 RTO 工艺选型、管控方案与申报要
大数据·数据库·人工智能
Scott9999HH7 小时前
【工控选型破局】拒绝盲目溢价与低质陷阱:基于 Modbus-RTU 状态诊断与自适应滑动中值滤波的 C++ 实战,兼论“性价比高又好用的仪器仪表厂家”选型之道
人工智能
To_OC7 小时前
调了一上午 DeepSeek 参数,我终于摸透了 temperature 和 Top K 的真实作用
人工智能·llm·deepseek