pyhton将点云投影成灰度图

1.定义图片大小
width = 416 #图片width
height = 208 #图片height*2

img = np.zeros([width,height*2])

2.点云处理

x = pointcloud.x

y = pointcloud.y

z = pointcloud.z

3.坐标变换(int型)

c = (x-min(x))/(max(x)-min(x))*width

r = (y-min(y))/(max(y)-min(y))*height

gray = z/max(z)*256

4.像素填充

if(gray>img(r,c):

img(r,c) = gray

 

# -*-coding:utf-8 -*-
# @Author:king
# @time:2020/3/8 13:50
# @File:gray_z.py
# @Software:PyCharm

import numpy as np
import cv2
import matplotlib.pyplot as plt

xlist = []
ylist = []
zlist = []
minx = 0
maxx = 12000.0
miny = 4600
maxy = 11000.0
filename1 = 'points1.txt'
with open(filename1, 'r') as file_to_read:
    while True:
        lines = file_to_read.readline()
        if not lines:
            break
            pass
        x, y, z = [float(i) for i in lines.split(' ')]
        if x >= minx and x < maxx and y >= miny and y < maxy and z >= 50. and z < 2000.:
            xlist.append(x)
            ylist.append(y)
            zlist.append(z)
width = 416 * 2
height = 208 * 2
w = []
h = []
im = []
img = np.zeros([width, height * 2])
for i in range(len(xlist)):
    c = int((xlist[i] - minx) / (maxx - minx) * width)
    r = int((ylist[i] - miny) / (maxy - miny) * height)
    w.append(c)
    h.append(r)
    gray = int(zlist[i] / 2000. * 256)
    if gray > img[r, c]:
        img[r, c] = gray
print(img)
np.savetxt('file.txt', img, fmt="%d")
cv2.imwrite("img.jpg", img)
cv2.imshow("img", img)
cv2.waitKey()
# plt.imshow(img, cmap="nipy_spectral")
# plt.show()

 

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值