实验室-NO.2 python 读取3D obj文件 + 特征点显示 + 凹凸点分类

本文介绍如何使用Python读取3Dobj文件,并实现特征点的显示与凹凸点分类。通过详细代码示例,展示了如何在3D模型上标记并分类特征点,适用于3D模型分析与处理的初学者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

(一)python 读取3D obj文件

(二)特征点显示

(三)凹凸点分类


 

(一)python 读取3D obj文件

转载自https://blog.youkuaiyun.com/hongmaodaxia/article/details/78956487

下载github里的整个proj,直接运行,将数据路径改为自己的即可!可鼠标点击旋转!

 

(二)特征点显示

def draw_feature(data):
    glPointSize(20)
    glBegin(GL_POINTS)
    color = [255, 255, 255]
    glColor3f(*color)
    po = [data[0], data[1], data[2]]
    glVertex3f(*po)  # 3个参数xyz  f:32位浮点数
    # time.sleep(5)
    glEnd()

 

(三)凹凸点分类

# 在github下载的proj里面修改

elif e.type == KEYDOWN:
                if e.key == pygame.K_ESCAPE:
                    pygame.quit()
                    sys.exit()
                # 按下q:显示特征点
                elif e.key == K_q:
                    global look
                    draw_feature(my_data[look])
                    pygame.display.flip()

                # 按下w:特征点数目+1
                elif e.key == K_w:
                    # global look
                    look = look + 1
                    if look >= l:
                        # jian  与  nojian写入文件
                        save_file(jianpath + path2, jian)
                        save_file(nojianpath + path2, nojian)
                        sys.exit()

                # 按下e:归为凸点
                elif e.key == K_e:
                    jian0 = list(my_data[look])
                    jian.append(jian0)
                    # print(jian)

                # 按下r:归为凹点
                elif e.key == K_r:
                    nojian0 = list(my_data[look])
                    nojian.append(nojian0)
# 在github下载的proj里面添加一个函数

def save_file(file_path, li):
    output = open(file_path, 'w+')
    for i in range(len(li)):
        for j in range(len(li[i])):
            output.write(str(li[i][j]))
            output.write(' ')
        output.write('\n')
    output.close()

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值