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]
相关推荐
DianSan_ERP1 小时前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
在人间耕耘1 小时前
HarmonyOS Vision Kit 视觉AI实战:把官方 Demo 改造成一套能长期复用的组件库
人工智能·深度学习·harmonyos
够快云库1 小时前
能源行业非结构化数据治理实战:从数据沼泽到智能资产
大数据·人工智能·机器学习·企业文件安全
Eloudy2 小时前
CHI 开发备忘 08 记 -- CHI spec 08
人工智能·arch·hpc
homelook2 小时前
Transformer与电池管理系统(BMS)的结合是当前 智能电池管理 的前沿研究方向
人工智能·深度学习·transformer
ZPC82102 小时前
docker 镜像备份
人工智能·算法·fpga开发·机器人
ZPC82102 小时前
docker 使用GUI ROS2
人工智能·算法·fpga开发·机器人
ssshooter2 小时前
免费和付费 AI API 选择指南
人工智能·aigc·openai
掘金酱2 小时前
「寻找年味」 沸点活动|获奖名单公示🎊
前端·人工智能·后端