繁体   English   中英

如何用图像的每个像素的值绘制3d图形?

How to plot 3d graphics with the values of each pixel of the image?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我将图片的颜色转换为LAB,如下所示:

import cv2
imbgr=cv2.imread('photo.jpg')
imlab=cv2.cvtColor(imbgr,cv2.COLOR_BGR2LAB)
cv2.imwrite('lab.jpg',imlab)

返回具有imlab [x,y]的像素,如何绘制具有这些值的图形?

1 个回复

这是一些如何将图像和图形图像数据显示为3-d数据的示例。

第一个和第二个图显示原始BGR图像,并将其单独的通道显示为BGR,然后显示为LAB。

第三和第四幅图显示了使用LAB图像的第一通道作为3-D数据的轮廓图和表面图。

另外:请注意imshow()需要RGB图像。 并且,如果需要,可以使用Aspect关键字,aspect ='equal'或set_aspect()将等高线图设为正方形。

import cv2
import numpy as np

import matplotlib.image as mpimg

import matplotlib.pyplot as plt

# for the surface map
from mpl_toolkits.mplot3d import Axes3D

imbgr = cv2.imread('Mona_Lisa.jpg')

imrgb = cv2.cvtColor(imbgr, cv2.COLOR_BGR2RGB)

imlab=cv2.cvtColor(imbgr,cv2.COLOR_BGR2LAB)

# Show the original image and individual color channels
plt.figure(0)
plt.subplot(2,2,1)

plt.imshow( imrgb )

plt.subplot(2,2,2)
plt.imshow(imbgr[:,:,0], cmap='Blues')

plt.subplot(2,2,3)
plt.imshow(imbgr[:,:,1], cmap='Greens')

plt.subplot(2,2,4)
plt.imshow(imbgr[:,:,2], cmap='Reds')

plt.show()

# show the LAB space iamge
plt.figure(1)
plt.subplot(2,2,1)

plt.imshow( imrgb )

plt.subplot(2,2,2)
plt.imshow(imlab[:,:,0], cmap='Greys')

plt.subplot(2,2,3)
plt.imshow(imbgr[:,:,1], cmap='cool')

plt.subplot(2,2,4)
plt.imshow(imbgr[:,:,2], cmap='cool')

plt.show()

# contour map
plt.figure(2)

y = range( imlab.shape[0] )
x = range( imlab.shape[1] ) 
X, Y = np.meshgrid(x, y)

plt.contour( X, Y, imlab[:,:,0], 50 )

plt.show()

# surface map
plt.figure(3)

ax = plt.axes(projection='3d')

y = range( imlab.shape[0] )
x = range( imlab.shape[1] ) 
X, Y = np.meshgrid(x, y)

ax.plot_surface( X, Y, imlab[:,:,0] )

plt.show()

这是由代码生成的图像,如下所示。

图(0)-原始图像和各个颜色通道

在此处输入图片说明

图(1)-LAB图像和单个通道

在此处输入图片说明

图(2)-第一个LAB通道的轮廓图

在此处输入图片说明

图(3)-第一个LAB通道的表面图

在此处输入图片说明

1 如何用像素绘制3D对象?

我的程序有问题。 我有ascii文件,其列为“ theta y radius”〜180 000行。 我可以从中计算出:x,y,z记录。 我尝试在3D空间中对其进行绘制,接下来我要合并像素,结果应该是可以用鼠标旋转的项目。 我应该只使用java.awt。 我有这样的事情: 那 ...

2 使用Matlab通过在每个像素处绘制线条将2D图像转换为3D

纤维的组织学图像 我获得了组织学图像,并想进行3D重建。 第一个是平面场图像,第二个是平面内纤维方向(每个像素处的方向),第三个是平面外纤维方向(每个像素处)。 图像是RGB,方向由不同的颜色表示。 我通过代码得到方向图: 和 我想到的是将第一个2D图像用 ...

3 图形引擎如何确定如何放置像素以制作3d图像?

我想知道一个简单的3d程序使用什么程序绘制2d像素,以便它们显示3d。 我真的对绘图很感兴趣,因为如果程序可以弄清楚如何使用平面屏幕生成深度图像,那么也许可以在绘图中使用这些技术。 我可以看一下基本的3d引擎吗? 没有任何2d到3d抽象? ...

6 绘制 3d 图形的问题

我正在尝试绘制一个 3d 图,代码运行良好,但该图是附加的空快照。 我还共享了图形数据 csv 文件https://drive.google.com/file/d/1dohDHX7mJKliF8X2xowCqRURQOuQE0Ip/view?usp=sharing . 提前致谢 ...

8 如何绘制3D图像?

我正在开发一个简单的3d软件渲染器,但是我不确定的一件事是如何在屏幕上实际绘制它们。 我可以用什么来绘制线框立方体? 我并不是在问如何在屏幕上实际绘制最后一步的情况下编写完整的3D管线。 编辑:我想我可以使用SDL做到这一点。 ...

9 像素化图形和3D表示

我正在写一个模仿自然物理学的程序。 我想知道除了覆盖OnDraw方法和每个像素的FillRectangle(x,y,1,1)以外,是否还有更好的绘制对象的方法。 有没有办法使用DirectX或OpenGL执行类似的操作? 因为据我所知Graphics不使用某台计算机的视频卡(如果我错了 ...

2012-08-20 11:12:30 1 112   c#/ opengl
10 如何用Java制作3D图形? [关闭]

首先,我是Java新手。 第二,对不起我的英语,但是我还在学习。 我需要在3D空间中创建对象,然后可以从鼠标中进行操作。 我可以像这样使正方形: 但是我能做什么呢? 我认为这是唯一的轮廓。 有Java专用类吗? 我只能使用awt; *及其衍生工具。 Canvas3D可以 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM