Python由图片生成三维模型。大致流程是:图片转换成灰度图,按照灰度值大小将像素点拉伸相应的距离,生成STL格式三维模型,用于雕刻或者3D打印。
想用Python实现,能说一下大致思路吗?尤其是如何生成三维模型。
原图 VS 浮雕效果图如下:
# 图像浮雕效果
import cv2
import numpy as np
# 读取原始图像
img = cv2.imread('images/yl_300.jpg', 1)
# 获取图像的高度和宽度
height, width = img.shape[:2]
# 图像灰度处理
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 创建目标图像
dstImg = np.zeros((height, width, 1), np.uint8)
# 浮雕特效算法:newPixel = grayCurrentPixel - grayNextPixel + 150
for i in range(0, height):
for j in range(0, width - 1):
grayCurrentPixel = int(gray[i, j])
grayNextPixel = int(gray[i, j + 1])
newPixel = grayCurrentPixel - grayNextPixel + 200 # 可修改200的值,浮雕效果略有不同
if newPixel > 255:
newPixel = 255
if newPixel < 0:
newPixel = 0
dstImg[i, j] = newPixel
print(img.shape)
print(dstImg.shape)
# 显示图像
cv2.imshow('src', img)
cv2.imshow('dst', dstImg)
cv2.imwrite('images/yl_fd.jpg', dstImg)
# 等待显示
cv2.waitKey()
cv2.destroyAllWindows()