使用python将一张人像图片转为点云图,最后显示一个二维图片
时间: 2024-05-03 11:23:20 浏览: 139
要将人像图片转换为点云图,可以使用Python中的OpenCV和Numpy库。以下是一个简单的实现:
```python
import cv2
import numpy as np
# 读取人像图片
img = cv2.imread("portrait.jpg")
# 转换为灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 二值化图像
_, threshold = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# 检测边缘
contours, _ = cv2.findContours(threshold, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 将边缘点转换为点云
points = []
for contour in contours:
for point in contour:
points.append(point[0])
# 将点云转换为二维数组
points_array = np.array(points)
# 显示点云图
import matplotlib.pyplot as plt
plt.scatter(points_array[:,0], points_array[:,1])
plt.show()
```
在上述代码中,我们首先读取了一张人像图片,然后将其转换为灰度图,并进行二值化处理。接着,使用OpenCV中的findContours函数检测图片中的所有边缘,并将边缘点转换为点云。最后,使用Matplotlib库中的scatter函数将点云图显示出来,从而得到了一个二维图片。
阅读全文