大致思路

感兴趣区域roi设置

映射点到像素上

移动坐标原点

根据高度值填充像素值

环境配置conda+ros

因为ros中的包是依赖Python2的,但是我们想用Python3b编程,所以需要安装一个conda环境。

在.bashrc中修改默认的conda环境变量。

# Conda

# export PATH=/home/s/anaconda3/bin:$PATH # 注释掉conda的环境变量

alias condapy3='. /home/s/anaconda3/etc/profile.d/conda.sh && conda activate py3.7' # 创建Python3.7的环境

打开终端默认还是python2,输入condapy3才进入python环境。

在py3.7环境中安装包

pip install catkin-tools

pip install rospkg

这样就可以通过虚拟环境编译script文件了

以这个package为例,使用

catkin_make

,然后

rosrun script文件时,要在conda环境下,这样使用的一些package才是指向该conda环境中的package的对应文件。

我们这个conda环境中的opencv版本如下

所以在执行script文件时打印出来是对应的版本:

(py3.7) ➜ catkin_ws clear

(py3.7) ➜ catkin_ws echo $ROS_PACKAGE_PATH

/home/s/catkin_ws/src:/home/s/ros_study/src:/opt/ros/kinetic/share

(py3.7) ➜ catkin_ws rosrun aiimooc_syz2 aiimooc_syz2.py

opencv: 4.2.0

open3d:0.7.0.0

ros实现(Python)

因为cv2和ros自带的cv有矛盾,我们想使用conda中自己安装的cv2,所以在import之前,先把ros中路径移除,在import之后在导入。

bird_eyes.py

#!/usr/bin/env python3

# use python3 in current conda env!!!

# import cv2 in conda rather than in ros

import sys

sys.path.remove('/opt/ros/kinetic/lib/python2.7/dist-packages')

import cv2

# 使用完cv2后再导入ros路径

sys.path.append('/opt/ros/kinetic/lib/python2.7/dist-packages')

from cv_bridge import CvBridge

import numpy as np

import rospy

from sensor_msgs.msg import PointCloud2,Image

import sensor_msgs.point_cloud2 as pc2

import open3d

import os

class pt2brid_eye:

def __init__(self):

self.image_pub = rospy.Publisher('/bird_eyes', Image, queue_size=10)

self.pt_sub=rospy.Subscriber("/rslidar_points", PointCloud2, self.callback)

self.bridge = CvBridge()

def callback(self,lidar):

lidar = pc2.read_points(lidar)

points = np.array(list(lidar))

im = self.point_cloud_2_birdseye(points) # im is a numpy array

self.image_pub.publish(self.bridge.cv2_to_imgmsg(im))

print("convert!")

def point_cloud_2_birdseye(self,points):

x_points = points[:, 0]

y_points = points[:, 1]

z_points = points[:, 2]

f_filt = np.logical_and((x_points > -50), (x_points < 50))

s_filt = np.logical_and((y_points > -50), (y_points < 50))

filter = np.logical_and(f_filt, s_filt)

indices = np.argwhere(filter)

x_points = x_points[indices]

y_points = y_points[indices]

z_points = z_points[indices]

x_img = (-y_points*10).astype(np.int32)+500

y_img = (-x_points *10).astype(np.int32)+500

pixel_values = np.clip(z_points,-2,2)

pixel_values = ((pixel_values +2) / 4.0) * 255

im=np.zeros([1001,1001],dtype=np.uint8)

im[y_img, x_img] = pixel_values

return im

# def cloud_subscribe():

# rospy.init_node('cloud_subscribe_node')

# pub = rospy.Publisher('/bird_eyes', Image, queue_size=10)

# rospy.Subscriber("/rslidar_points", PointCloud2, callback)

# rospy.spin()

if __name__ == '__main__':

print("opencv: {}".format(cv2.__version__))

print("open3d:{}".format(open3d.__version__))

# cloud_subscribe()

pt2img=pt2brid_eye()

rospy.init_node('pt_to_brid_eyeImage_node')

rospy.spin()

可视化

完整代码

https://github.com/suyunzzz/aiimooc_lesson/tree/master/aiimooc_syz2

参考

http://ronny.rest/tutorials/module/pointclouds_01/point_cloud_birdseye/

http://ronny.rest/blog/post_2017_03_26_lidar_birds_eye/

python点云可视化工具_点云生成鸟瞰图(Python)相关推荐

  1. python点云可视化工具_救命!点云可视化(不需配置PCL)

    分享一波简单的可视化bin格式点云的方法. 先大概讲下背景,目前激光雷达采集的点云文件大多基于ROS,然后转化为pcd.bin格式进行处理.(ros-pcd-bin格式之间相互转换格式有相应的工具,如 ...

  2. python数据分析与可视化清华大学_【官方正版】 Python数据分析与可视化 微课视频版 清华大学出版社 魏伟一 李晓红 软件工具 程序设计...

    第1章数据分析与可视化概述 1.1数据分析 1.2数据可视化 1.3数据分析与可视化常用工具 1.4为何选用Python进行数据分析与可视化 1.5Python数据分析与可视化常用类库 1.6Jupy ...

  3. python 内存泄漏分析工具_记一次调试python内存泄露的问题

    这两天由于公司需要, 自己编写了一个用于接收dicom文件(医学图像文件)的server. 经过各种coding-debuging-coding-debuging之后, 终于上线了, 上线后心里美滋滋 ...

  4. python如何实现图片工具_常用的十大 python 图像处理工具

    本文为 AI 研习社编译的技术博客,原标题 : 10 Python image manipulation tools. 作者 | Parul Pandey 翻译 | 安其罗•乔尔.JimmyHua 编 ...

  5. 百度云盘服务器升级,从云储存工具升级为云操作系统,百度网盘将成为百度5G物联入口...

    原标题:从云储存工具升级为云操作系统,百度网盘将成为百度5G物联入口 随着移动智能生活的不断发展,我们生活中的很多东西已经逐渐由线下转移到线上,无纸化办公受到广泛认可,越来越多的文档已经转变为电子版的 ...

  6. python五种可视化工具及六道常见面试题

    2017-12-26  吊炸天的  [Python五种可视化工具] 在 Python 中,将数据可视化有多种选择,正是因为这种多样性,何时选用何种方案才变得极具挑战性.本文包含了一些较为流行的工具以及 ...

  7. Python使用matplotlib可视化绘制并通过Tkinter生成按钮将可视化结果导出为pdf文件

    Python使用matplotlib可视化绘制并通过Tkinter生成按钮将可视化结果导出为pdf文件 目录 Python使用matplotlib

  8. GIF录屏制作工具_录制屏幕生成GIF(C#工程+源码)

    效果图如下: 工程源码见文章结尾 通过录制屏幕的区域 可以预览生成的GIF图片 图片比较清晰 源码中可以修改gif质量 源码中可以修改gif帧数 通过鼠标选择需要的区域 FrmRect frmRect ...

  9. python实现数据可视化软件_基于Python实现交互式数据可视化的工具

    作者:Alark Joshi 翻译:陈雨琳 校对:吴金笛 本文2200字,建议阅读8分钟. 本文将介绍实现数据可视化的软件包. 这学期(2018学年春季学期)我教授了一门关于数据可视化的数据科学硕士课 ...

  10. python图表可视化工具_比Excel制图更强大,Python可视化工具Altair入门教程

    原作者 Parul Pandey 晓查 编译整理 量子位 出品 | 公众号 QbitAI 数据转化成更直观的图片,对于理解数据背后的真相很有帮助.如果你有这方面的需求,而且还在使用Python,那么强 ...

最新文章

  1. 技术图文:NumPy 的简单入门教程
  2. 10.1 国庆 考试
  3. ListView使用技巧
  4. 解决Oracle jdbc驱动包maven下载失败问题
  5. 微信人人商城云服务器,微信支付配置
  6. 如何在SAP Spartacus自定义Component里消费数据
  7. 太原市中考计算机考试系统,太原中考报名系统
  8. maven版本_Maven – 工作原理
  9. Springboot在线电影系统实战开发
  10. ROS学习笔记6(理解ROS话题)
  11. 开源GIS(四)——openlayers中geoserver发布的WMS与WFS加载
  12. JS页面打开方式丶对话框及页面跳转方式
  13. 算法:62唯一路径Unique Paths 动态规划和排列组合算法
  14. 百度商业推广php,百度“知心搜索”,背后商业协议
  15. 【论文写作技巧】Endnote参考文献统一输出格式
  16. C/C++可变参数列表参数处理方法va_list、va_start()、va_copy()、va_arg()、va_end()
  17. 微信二维码来源统计自动生成二维码统计?
  18. numeric scale mysql_MySQL基础教程1 — 数据类型之数值类型 - numeric
  19. 用python画小猪佩奇的编码有注释_啥是佩奇?使用Python自动绘画小猪佩奇的代码实例...
  20. 记住这三个方法,让你的钱越花越多

热门文章

  1. 01读书笔记:《编码》-隐匿在计算机软硬件背后的语言(01-11章)
  2. 【BZOJ1580】【USACO2009Hol】杀手游戏 计算几何
  3. Milvus 2.1 版本更新 - 简单可信赖、性能持续提升
  4. 31岁,追忆似水流年。。。
  5. python中sklearn.datasets.make_blobs()函数用法
  6. 永久免费建站-个人博客开发
  7. spring boot UnsatisfiedDependencyException:
  8. Task5 | 结构方程 | “老年病”与身份的关系
  9. 第一次学游泳技巧_学游泳需要注意什么 第一次游泳注意事项
  10. vue+tsx初体验