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

二级分销什么是关键词排名优化

二级分销,什么是关键词排名优化,微信小程序独立app,wordpress pwshell旋转变换原理 旋转是仿射变换的一种,通过变换矩阵实现图像绕指定中心旋转,保持直线和平行性不变。其数学表示为: 其中: ( c x , c y ) (c_x, c_y) (cx​,cy​) 是旋转中心。 θ \theta θ 是旋转角度(逆时针为正&…

旋转变换原理

旋转是仿射变换的一种,通过变换矩阵实现图像绕指定中心旋转,保持直线和平行性不变。其数学表示为:
在这里插入图片描述
其中:

  • ( c x , c y ) (c_x, c_y) (cx,cy) 是旋转中心。
  • θ \theta θ 是旋转角度(逆时针为正)。

旋转矩阵的平移项用于补偿旋转中心的偏移。推导过程如下:

  1. 将旋转中心移到原点
    在这里插入图片描述

  2. 旋转
    [
\begin{bmatrix}
\cos\theta & -\sin\theta & 0 \
\sin\theta & \cos\theta & 0 \
0 & 0 & 1
\end{bmatrix}
]

  3. 移回原位置
    [
\begin{bmatrix}
1 & 0 & c_x \
0 & 1 & c_y \
0 & 0 & 1
\end{bmatrix}
]

  4. 合并后的矩阵(取前两行):
    [
M =
\begin{bmatrix}
\cos\theta & -\sin\theta & (1-\cos\theta)c_x + \sin\theta c_y \
\sin\theta & \cos\theta & -\sin\theta c_x + (1-\cos\theta)c_y
\end{bmatrix}
]

import numpy as np
import cv2
import matplotlib.pyplot as pltdef get_rotation_matrix(angle, center=None, scale=1.0):"""生成正确的2x3旋转仿射矩阵参数:angle: 旋转角度(度数,逆时针为正)center: (cx, cy)旋转中心坐标scale: 缩放比例返回:2x3仿射变换矩阵"""angle_rad = np.deg2rad(angle)cos = np.cos(angle_rad) * scalesin = np.sin(angle_rad) * scaleif center is None:raise ValueError("必须指定旋转中心")cx, cy = center# 计算平移分量tx = cx * (1 - cos) + cy * sinty = cy * (1 - cos) - cx * sinreturn np.array([[cos, -sin, tx],[sin,  cos, ty]])def warp_affine(image, M, dsize):"""手动实现仿射变换(支持多通道图像)参数:image: 输入图像(H,W,C)M: 2x3仿射变换矩阵dsize: 输出图像大小(width, height)返回:变换后的图像"""h, w = dsize[1], dsize[0]output = np.zeros((h, w, image.shape[2]), dtype=image.dtype)# 构造逆变换矩阵M_inv = np.vstack([M, [0, 0, 1]])M_inv = np.linalg.inv(M_inv)[:2]# 生成目标图像网格坐标y, x = np.indices((h, w))coords = np.stack([x, y, np.ones_like(x)], axis=-1)  # (H,W,3)# 计算原图坐标src_coords = np.dot(coords, M_inv.T)  # (H,W,2)# 双线性插值x_src = src_coords[:, :, 0]y_src = src_coords[:, :, 1]# 计算四个邻近点坐标x0 = np.floor(x_src).astype(int)y0 = np.floor(y_src).astype(int)x1 = x0 + 1y1 = y0 + 1# 处理边界x0 = np.clip(x0, 0, image.shape[1]-1)y0 = np.clip(y0, 0, image.shape[0]-1)x1 = np.clip(x1, 0, image.shape[1]-1)y1 = np.clip(y1, 0, image.shape[0]-1)# 计算权重wa = (x1 - x_src) * (y1 - y_src)wb = (x_src - x0) * (y1 - y_src)wc = (x1 - x_src) * (y_src - y0)wd = (x_src - x0) * (y_src - y0)# 对每个通道进行插值for c in range(image.shape[2]):output[:, :, c] = (wa * image[y0, x0, c] + wb * image[y0, x1, c] + wc * image[y1, x0, c] + wd * image[y1, x1, c])return output.astype(np.uint8)# 测试代码
if __name__ == "__main__":# 读取图像img = cv2.imread('example.jpg')img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)# 设置旋转参数angle = 45  # 旋转45度h, w = img.shape[:2]center = (w//2, h//2)  # 图像中心# 生成旋转矩阵M = get_rotation_matrix(angle, center)# 手动实现变换rotated_manual = warp_affine(img, M, (w, h))# 使用OpenCV实现对比rotated_cv = cv2.warpAffine(img, M, (w, h))# 显示结果plt.figure(figsize=(12, 6))plt.subplot(131), plt.imshow(img), plt.title('Original')plt.subplot(132), plt.imshow(rotated_manual), plt.title('Manual Rotation')plt.subplot(133), plt.imshow(rotated_cv), plt.title('OpenCV Rotation')plt.show()
http://www.cadmedia.cn/news/5416.html

相关文章:

  • 建e网室内惠州seo招聘
  • 广州网络广告推广企业seo排名外包
  • 合肥企业网站营销电话百度手机浏览器
  • 国内二级域名免费申请windows优化大师怎么卸载
  • 全国免费发布广告信息平台seo排名哪家公司好
  • 长春集团网站建设广州百度推广电话
  • 网站建设销售是什么企业整站seo
  • 专门做中式服装平台的网站海南百度推广公司有哪些
  • 湖北天健建设集团有限公司网站做网站需要准备什么
  • 网站开发工程师应聘书范文1000html网页制作用什么软件
  • 门店库存管理软件爱站网seo工具
  • 前端用户中心 wordpressseo搜索优化待遇
  • 免费建站建站crm系统网站
  • 武汉网页定制公司seo干什么
  • 江油网站网站建设品牌软文
  • 网站排名查询平台免费发广告的网站
  • 石家庄网站建设方案咨询信阳网站seo
  • 网站推广排名收费标准网络营销专家
  • 今日足球比赛预测推荐分析深圳网站关键词优化推广
  • 呼和浩特建设厅官方网站什么是sem和seo
  • 如何将自己做的网页做成网站中国国家培训网
  • 珠海网站建设案例网站域名查询地址
  • wordpress 三级分类seo首页排名优化
  • 做网站一般要多少钱深圳网站制作公司
  • 南县建设局网站大型网站seo课程
  • 私人网站服务器免费搜索百度
  • 子洲网站建设制作百度引擎的搜索方式是什么
  • b2b招商网站建设b2b免费推广平台
  • 页面模板资源seo咨询服务价格
  • 广州互帮物流哪家公司做的网站seo优化软件