当前位置: 首页 > news >正文

点的旋转报错记录

import cv2, numpy as np

pts = np.array([[100, 100], [200, 100], [200, 200]], np.float32)
center = np.array([150, 150], np.float32)
angle = 45

# 方法 1: 你自己的函数
def rotate_around_center(points, center, angle_deg):
angle_rad = np.deg2rad(angle_deg)
R = np.array([
[np.cos(angle_rad), -np.sin(angle_rad)],
[np.sin(angle_rad),  np.cos(angle_rad)]
])
return (points - center) @ R.T + center

r1 = rotate_around_center(pts, center, angle)

# 方法 2: OpenCV 仿射矩阵
M = cv2.getRotationMatrix2D(tuple(center), angle, 1.0)
r2 = cv2.transform(pts.reshape(-1, 1, 2), M).reshape(-1, 2)

print(np.allclose(r1, r2))

rotate_around_center()cv2.getRotationMatrix2D() + cv2.transform()结果确实可能不同
虽然理论上看似等价。

这种差异不是数值误差,而是 OpenCV 的旋转矩阵定义方式与我们数学推导中的符号方向不同
我来带你一步步看出根源 👇


🧩 一、根本原因:角度方向(符号)不同

在 OpenCV 中:

cv2.getRotationMatrix2D(center, angle, scale)
定义的 angle逆时针为正方向但图像坐标系的 y 轴是向下的

而在标准数学坐标系中(你手写的版本):

y 轴向上。

所以:

  • 图像坐标系 下,y 轴朝下;

  • OpenCV 在内部等价于执行了一个 顺时针旋转

  • 而你的矩阵 R = [[cos, -sin], [sin, cos]]逆时针旋转

👉 因此,二者在图像坐标下的结果是 关于旋转中心对称的

http://www.dtcms.com/a/566670.html

相关文章:

  • 在c盘做网站可以吗万界商城系统
  • 江门手机网站建设wordpress step 2
  • Sigmoid vs Softmax
  • 网上做彩票网站排名用自己的电脑做服务器建网站
  • 做网站价格公司深圳网域官网
  • 上海做外贸网站的公司centos7使用wordpress
  • 大学生互助联盟网站建设需求分析说明表辽宁网络科技有限公司
  • 温州专业网站建设wordpress 网站关键词
  • 【IC】NoC设计入门 -- 延迟 (Latency) 吞吐量 (Throughput)
  • wordpress修改站点logo大小三星做号网站
  • 8.2 时钟数编程
  • 帮助企业做网站的销售健康码防疫核验一体机
  • 免费免费网站模板wordpress 当前页面登录密码
  • 自适应wordpress石家庄网站建设seo公司
  • 查关键词热度的网站设计室内装修效果图
  • (6)普中A2 51单片机矩阵键盘和密码锁
  • k8s中执行脚本如果提示etcd找不到,可以做如下的操作
  • 网站收录查询接口普通网站 用多说
  • 网站源码怎么弄怎么不花钱做公司网站
  • 高职生技能竞赛获奖:升学优势与职业发展路径
  • 网站开发最新架构静态网页模板免费下载的网站
  • 2020年多媒体应用设计师考试上午真题答案解释(2)
  • 不用编程做APP和响应式网站美食网站开发可行性分析报告
  • 专门做调查的网站个人怎么报考消防证
  • 怎样自己做免费网站ps网站轮播图怎么做的
  • 网页设计首页怎么设计网站新闻不添加关键词超链接对优化有影响吗
  • seo广告投放是什么意思关键词优化流程
  • 河北省城乡与住房建设厅网站网页设计案例
  • CC-Link IEFB 转 EtherCAT:物联网网关衔接三菱FX与汇川伺服电芯±0.05mm移送案例
  • 凡科建站官网郑州网站外包公司