旋转的角度正数负数
旋转的角度正数负数/*math coordinate, x right, y upper, clockwise angle 0, anti-clockwise angle 0(x-y)image coordinate, x right, y down, clockwise angle 0(x-y), anti-clockwise angle 0*//*math coordinate, x right, y upper, clockwise angle 0, anti-clockwise angle 0(x-y)ego coordinate, y right, z upper, clockwise angle 0, anti-clockwise angle 0(y-z)*/import **cv2** import **numpy** as **np** def **rotate_point**(): point **np**.**array**([200, 100]) image **np**.**zeros**((400, 400, 3), dtype **np**.uint8) **cv2**.**circle**( image, point, 6, (0, 0, 255), thickness 2 ) center **np**.**array**([200, 200]) **cv2**.**circle**( image, center, 1, (0, 0, 255), thickness 2 ) angle -90 * **np**.pi / 180 mat **np**.**array**( [[**np**.cos(angle), -**np**.sin(angle)], \ [**np**.sin(angle), **np**.cos(angle)]] ) pn point **-** center pn **np**.**reshape**(pn, (2, 1)) now **np**.matmul(mat, pn) now **np**.**asarray**(now, dtype**np**.int32) now now.**flatten**() **** center **cv2**.**circle**( image, now.**tolist**(), 9, (255, 0, 0), thickness 2 ) **cv2**.**imwrite**(/home/Desktop/stixel-world_summer_original/scripts/tmp.jpg, image) if __name__ __main__: **rotate_point**()OpenCV 二维点旋转问题解析你现在遇到现象数学上旋转矩阵角度为负代表顺时针旋转角度为正才是逆时针旋转这是很多人踩坑的关键点。1. 数学坐标系 vs OpenCV图像坐标系标准数学笛卡尔坐标系x向右y向上θ0\theta0θ0逆时针旋转θ0\theta0θ0顺时针旋转OpenCV图像坐标系x向右y向下y轴翻转同样一套旋转矩阵行为会反过来数学旋转矩阵 [ cosθ, -sinθ ] [ sinθ, cosθ ]你的代码angle -90 * np.pi / 180 # -90° mat np.array( [[np.cos(angle), -np.sin(angle)], [np.sin(angle), np.cos(angle)]] )在数学坐标系-90° 顺时针转90度在图像(y向下)坐标系-90°实际表现为逆时针90°90°会变成顺时针90°。重点图像y轴向下旋转方向和教科书数学定义是反过来的。2. 完整修正代码加上注释import cv2 import numpy as np def rotate_point(): # 原始点 (x,y) point np.array([200, 100]) image np.zeros((400, 400, 3), dtype np.uint8) # 画原始点红色 cv2.circle( image, point, 6, (0, 0, 255), thickness 2 ) # 旋转中心 center np.array([200, 200]) cv2.circle( image, center, 1, (0, 0, 255), thickness 2 ) # 关键 # 图像坐标系 y轴向下 # 想要【逆时针旋转90度】angle 给 90° 数学矩阵得到的是顺时针 # 想要图像画面上视觉逆时针90度要填 angle -90° angle_deg -90 angle angle_deg * np.pi / 180 # 标准2D旋转矩阵 rot_mat np.array([ [np.cos(angle), -np.sin(angle)], [np.sin(angle), np.cos(angle)] ]) # 步骤1平移把原点挪到旋转中心 p_rel point - center p_rel p_rel.reshape(2,1) # 步骤2矩阵旋转 p_rot_rel rot_mat p_rel # 步骤3平移回去 p_rot (p_rot_rel.flatten() center).astype(np.int32) # 画旋转后点蓝色圆圈 cv2.circle( image, p_rot.tolist(), 9, (255, 0, 0), thickness 2 ) cv2.imwrite(/home/Desktop/stixel-world_summer_original/scripts/tmp.jpg, image) if __name__ __main__: rotate_point()3. 如果你想统一逻辑完全符合数学笛卡尔坐标系y向上如果不想被图像y向下搞混淆可以手动对y坐标取负# point (x,y_img) → math (x, -y_img) # 旋转后再还原 y4. OpenCV自带函数参考cv2.getRotationMatrix2Dcv2的旋转矩阵内部已经适配图像y向下行为和手写矩阵一致。# 注意cv2.getRotationMatrix2D角度定义正数图像上逆时针 M cv2.getRotationMatrix2D(center(200,200), angle-90, scale1.0) dst cv2.warpAffine(image, M, (400,400))⚠️注意cv2.getRotationMatrix2D的角度定义正数图像视觉逆时针旋转和手写纯数学矩阵符号是相反的。对照表图像坐标系 y向下想要画面视觉效果手写数学矩阵 anglecv2.getRotationMatrix2D angle逆时针90°-90° * pi/18090顺时针90°90° * pi/180-90你的现象解释你代码里面写angle-90手写数学矩阵输出画面上就是视觉逆时针旋转90度。不是bug根源就是图像y轴朝下旋转方向反转。如果你需要我可以给你画一张坐标变换示意图代码直观看到y轴翻转带来方向反转。

相关新闻

SOME/IP 协议实战(二):SOA 仿真环境搭建、5 个工程坑与未来选型

SOME/IP 协议实战(二):SOA 仿真环境搭建、5 个工程坑与未来选型

上一篇文章发出后有些朋友问我 “我手头没有真车和真实 ECU,怎么在办公室搭一个 SOME/IP 仿真环境?”“SOME/IP 我学完了,但真到项目里就各种坑——服务冲突、SD 不收敛、TP 重组失败——怎么避?” 这一篇就是为这两个问题写的。我…

2026/9/27 19:53:09 阅读更多 →
开关电源PFC电路设计:拓扑选择与优化实践

开关电源PFC电路设计:拓扑选择与优化实践

1. 电源PFC电路拓扑概述 在开关电源设计领域,功率因数校正(PFC)电路是提升能源转换效率的关键技术。我第一次接触PFC电路是在2015年设计一款500W服务器电源时,当时客户要求整机效率必须达到80Plus金牌标准。传统整流电路带来的0.6…

2026/9/25 4:15:45 阅读更多 →
麒麟信安操作系统与工控安全方案的技术突破与应用

麒麟信安操作系统与工控安全方案的技术突破与应用

1. 项目背景与事件概述 近日,麒麟信安收到湖南省工业和信息化厅发来的感谢信,这封官方信函充分肯定了企业在信息技术创新领域的技术实力和突出贡献。作为国内操作系统和网络安全领域的核心企业,此次获得省级主管部门的正式认可,标…

2026/9/20 3:46:24 阅读更多 →

最新新闻

Python agilent-format 包实战案例与常见错误

Python agilent-format 包实战案例与常见错误

1. 引言agilent-format 是一个用于解析和生成安捷伦(Agilent)科学仪器数据文件的 Python 包。它主要面向安捷伦 HPLC、GC、LC-MS 等仪器导出的数据文件格式,帮助科研人员和数据分析工程师在不依赖厂商专有软件的情况下,直接读取、…

2026/9/27 19:52:57 阅读更多 →
面向 AI Agent 的数据分析:用 TaoToken 统一 Key 打通 Agent 工具链配置

面向 AI Agent 的数据分析:用 TaoToken 统一 Key 打通 Agent 工具链配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/27 19:52:57 阅读更多 →
学习C#开源报表组件Seal Report(32:Seal Report Designer界面布局-28)

学习C#开源报表组件Seal Report(32:Seal Report Designer界面布局-28)

Seal Report Designer软件左侧面板的Views节点内Model视图控件,其下支持添加Chart JS View视图,该控件用于将从数据源查询出的数据,通过Chart.js前端图表库渲染成HTML5图表。Chart JS View视图相关的属性与View对象属性类似,本文主…

2026/9/27 19:52:57 阅读更多 →
想找类似 WorkBuddy 的企业 Agent?先用一条真实工作流筛选 TraeWork,再配 TaoToken 打通 Workspace

想找类似 WorkBuddy 的企业 Agent?先用一条真实工作流筛选 TraeWork,再配 TaoToken 打通 Workspace

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/27 19:52:57 阅读更多 →
品牌网站建设蔻大蝌蚪避坑指南:3个细节决定成败

品牌网站建设蔻大蝌蚪避坑指南:3个细节决定成败

品牌网站建设蔻大蝌蚪避坑指南:3个细节决定成败 模板网站太丑不够用,这是很多甲方在对接蔻大蝌蚪做品牌官网时最常吐槽的痛点。如果你发现做出来的页面像十年前的PPT,或者手机端排版乱成一锅粥,那问题大概率出在前期需求没对齐,或者技术选型踩了坑。…

2026/9/27 19:52:57 阅读更多 →
OpenClaw 人人养虾:阿里云 ECS 一键部署与 TaoToken 配置实战

OpenClaw 人人养虾:阿里云 ECS 一键部署与 TaoToken 配置实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/27 19:51:56 阅读更多 →

日新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/27 0:00:34 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/27 0:00:34 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/27 0:00:34 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/27 0:00:34 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/27 0:00:34 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/27 0:00:34 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/27 9:12:14 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/25 20:29:31 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/26 22:52:30 阅读更多 →