使用numpy库对点云数据进行旋转操作

import numpy as np
from math import *


def VaryPoint(data, axis, degree):
    xyzArray = {
        'X': np.array([[1, 0, 0],
                  [0, cos(radians(degree)), -sin(radians(degree))],
                  [0, sin(radians(degree)), cos(radians(degree))]]),
        'Y': np.array([[cos(radians(degree)), 0, sin(radians(degree))],
                  [0, 1, 0],
                  [-sin(radians(degree)), 0, cos(radians(degree))]]),
        'Z': np.array([[cos(radians(degree)), -sin(radians(degree)), 0],
                  [sin(radians(degree)), cos(radians(degree)), 0],
                  [0, 0, 1]])}
    newData = np.dot(data, xyzArray[axis])
    return newData


def SaveTxt(txtAll):
    for data_ in txtAll:
        np.savetxt(data_[1], data_[0])


def ProcssPoint(readPath, varyData, sessionNum, savePath):
    txtAll = []

    for i in range(0, sessionNum + 1):
        pathNew = readPath + str(i) + ".txt"
        savePath_ = savePath + str(i) + ".txt"
        print(pathNew)
        try:
            dataInitNp = np.loadtxt(pathNew)
            print(dataInitNp)
            for para in varyData:
                dataInitNp = VaryPoint(dataInitNp[:, :3], para[0], para[1])
            txtAll.append([dataInitNp, savePath_])

        except:
            continue
    return txtAll


if __name__ == "__main__":
    readPath = "File/DoD/3cm/BU/"  # 待处理点云地址
    savePath = 'File/DoD/3cm/VaryBU/'  # 处理后点云保存地址
    sessionNum = 14  # 场次
    # 旋转轴,XYZ均可填入
    varyData = [
        ["Z", 41],
        ["Y", 61]]
    txtAll = ProcssPoint(readPath, varyData, sessionNum, savePath)
    SaveTxt(txtAll)

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值