Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何用图像中每个像素的值绘制三维图形?_Python_Python 3.x_Opencv_Image Processing_Histogram - Fatal编程技术网

Python 如何用图像中每个像素的值绘制三维图形?

Python 如何用图像中每个像素的值绘制三维图形?,python,python-3.x,opencv,image-processing,histogram,Python,Python 3.x,Opencv,Image Processing,Histogram,我将图片的颜色转换为LAB,如下所示: import cv2 imbgr=cv2.imread('photo.jpg') imlab=cv2.cvtColor(imbgr,cv2.COLOR_BGR2LAB) cv2.imwrite('lab.jpg',imlab) 使用imlab[x,y]返回像素,如何使用这些值绘制图形?以下是一些如何将图像和图形图像数据显示为三维数据的示例 第一幅和第二幅图显示原始BGR图像及其各个通道,分别为BGR和LAB 第三幅和第四幅图显示了使用实验室图像的第一个通

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

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

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

以下是一些如何将图像和图形图像数据显示为三维数据的示例

第一幅和第二幅图显示原始BGR图像及其各个通道,分别为BGR和LAB

第三幅和第四幅图显示了使用实验室图像的第一个通道作为三维数据的等高线图和曲面图

旁白:请注意,imshow()需要RGB图像。如果需要,可以使用aspect关键字aspect='equal'或set_aspect()使等高线图成为正方形

下面是代码生成的图像,如下所示

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

图(1)-实验室图像和单个通道

图(2)-第一个实验室通道的等高线图

图(3)-第一个实验室通道的表面图


不久前,有人问了一个非常类似的问题(但OP比你走得远了一点),请参见。这将在正确的位置绘制所有标记,然后您可以按照我对该问题的评论,查看如何将标记颜色映射到图像颜色。好的,但发送给我的问题只是图形,您无法获得颜色我回答了Alexander指出的问题。答案解决了你的问题吗?
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()