• (10)点云数据处理学习——基于手机视频和工具实现三位点云


    1、主要参考

    (1)大佬的视频

    Create Point Clouds With Your Smartphone_哔哩哔哩_bilibili

    2、视频和图片的获取 

    2.1用手机拍摄一段视频

    站着不动,找个特征多一点的地方,比如对着一栋大楼。手持手机,以身体为中心,旋转拍摄一小段视频,本次测试视频10s。

    2.2写个小脚本,将视频转换为tiff格式

    1. #引入opencv模块
    2. import cv2 as cv
    3. videofile = "D:\\RGBD_CAMERA\\python_3d_process\\video\\VID_20221204_104946.mp4"
    4. imgpath= "D:\\RGBD_CAMERA\\python_3d_process\\tiffimage\\"
    5. cap = cv.VideoCapture(videofile)
    6. # fps = cap.get(cv.CAP_PROP_FPS)
    7. icount = 0
    8. # namebase = 3150000
    9. # namebase = 3160000
    10. # namebase = 3170000
    11. # namebase = 3180000
    12. # namebase = 3190000
    13. # namebase = 3200000
    14. namebase = 1
    15. #先创建窗口,这时候可以调整大小了
    16. cv.namedWindow("video",cv.WINDOW_NORMAL)
    17. while (True):
    18. # 读帧
    19. ret, frame = cap.read()
    20. icount = icount +1
    21. if ret is None:
    22. break
    23. # 保存图像
    24. # if icount %5 == 0:
    25. namebase = namebase +1
    26. cv.imwrite(imgpath+str(namebase)+".tiff",frame)
    27. cv.imshow("video", frame)
    28. cv.waitKey(3)
    29. # if cv2.waitKey(int(1000 / fps)) & 0xFF == ord('q'):
    30. # break
    31. # 释放cap
    32. cap.release()
    33. # 关闭窗口,清除程序所占用的内存
    34. cv.destroyAllWindows()

    2.3 10s的视频得到了312张图

     3 工具用起来

    3.1 Agisoft Metashape

    (1)下载一个,有试用版

    (2)其它下载请勿用于商业用途

    3.2 使用过程

    (1)点击Workflow/Add Phots在跳出的窗口中选择所有文件

     (2)点击Workflow/Align Photos

     

     (3)在跳出的窗口中选择Medium和Sequential,而后点击OK

    (1)最终使用了如下操作,没有勾选Generic preselection并选择High

     (2)如下简单操作没有选用,不然会告诉我部分图片失败....

     (4)耐心等待完成

     (5)点击Workflow/Build Dense Cloud

     (6)在跳出的窗口中选择如下

    (1)选用了如下选项

     (2)没有使用如下选项

     (7)点击Ok后耐心等待

     (8)计算完毕后可以使用Model/View Mode/Dense Cloud看一波

     

     (9)最后导出一下获得的点云File/Export/Export Points...

     (10)存为各种类型都行,本次存为.pcd格式

    4、显示一下

    (1)测试代码

    1. # pip install -i https://pypi.tuna.tsinghua.edu.cn/simple open3d
    2. # pip install open3d -i https://pypi.tuna.tsinghua.edu.cn/simple
    3. #xachen 显示可以了,20221128
    4. import open3d as o3d
    5. import numpy as np
    6. # path = "D:/RGBD_CAMERA/python_3d_process/1_hezi.pcd"
    7. path = "D:/RGBD_CAMERA/python_3d_process/chenmobile.pcd"
    8. pcd = o3d.io.read_point_cloud(path) # path为文件路径
    9. o3d.visualization.draw_geometries([pcd],
    10. window_name="窗口名字测试",
    11. point_show_normal=False,
    12. width=800, # 窗口宽度
    13. height=600) # 窗口高度

    (2)显示结果,感觉怪怪的

     

     

  • 相关阅读:
    CSS滤镜实现鼠标悬停图片变黑白(灰色)
    STM32_FSMC_HAL(介绍)
    最强Python面试题之Python基础题
    Git从入门到项目实战,一篇文章吃透Git
    Linux 中的内部命令和外部命令
    ARM cache 分析
    【408数据结构与算法】—队列的顺序表示和实现(十三)
    股票level2数据接口获取逐笔成交数据的过程
    【Gitee】使用IDEA上传本地的项目到Gitee
    为什么训练交叉验证精度很高但是测试特别差劲
  • 原文地址:https://blog.csdn.net/chencaw/article/details/128170016