利用matplotlib将图片放入三维坐标里

1 篇文章 0 订阅

如何将二维图片放入三维坐标里显示,我是分三步做的:

1.读取二维图片,获取图片的尺寸

img = Image.open("/Users/yuhao/Desktop/timg.jpg")
x = img.size[0]
y = img.size[1]

2.循环遍历图片的所有像素,将其每一个像素所代表的颜色转换为颜色代码

for i in range(x):
    for j in range(y):

        r = hex(img.getpixel((i, j))[0])[2:]
        b = hex(img.getpixel((i, j))[1])[2:]
        g = hex(img.getpixel((i, j))[2])[2:]

        if len(r) == 1:
            r = '0' + r
        if len(b) == 1:
            b = '0' + b
        if len(g) == 1:
            g = '0' + g
        col = '#' + r + b + g

3.在循环遍历的同时把二维图片每一个像素点放入三维坐标(需要指定z坐标的位置)

ax.scatter(i, j, 5, c=col, alpha=0.5)

输入数据:

 

输出数据:

 

完整代码:


from PIL import Image
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

fig = plt.figure()
ax = Axes3D(fig)

img = Image.open("/Users/yuhao/Desktop/timg.jpg")
x = img.size[0]
y = img.size[1]


for i in range(x):
    for j in range(y):

        r = hex(img.getpixel((i, j))[0])[2:]
        b = hex(img.getpixel((i, j))[1])[2:]
        g = hex(img.getpixel((i, j))[2])[2:]

        if len(r) == 1:
            r = '0' + r
        if len(b) == 1:
            b = '0' + b
        if len(g) == 1:
            g = '0' + g
        col = '#' + r + b + g
        # col = '#FF00FF'
        ax.scatter(i, j, 5, c=col, alpha=0.5)
plt.show()

 

提示:我的想法是对每一个像素来进行操作,所以说绘图的速度会超级慢!!!!

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值