Python matplotlib.image.imread()返回的数组是什么意思?
我试图用Python3编写一个程序,获取图像高度的下半部分,然后绘制直方图。 我以下面这样的代码为例。 但我不知道为什么,也不知道它返回了什么值。我无法计算出操作的是什么值,这条线实际上是做什么的Python matplotlib.image.imread()返回的数组是什么意思?,python,python-3.x,numpy,matplotlib,Python,Python 3.x,Numpy,Matplotlib,我试图用Python3编写一个程序,获取图像高度的下半部分,然后绘制直方图。 我以下面这样的代码为例。 但我不知道为什么,也不知道它返回了什么值。我无法计算出操作的是什么值,这条线实际上是做什么的 img[img.shape[0]//2:,:] 示例代码 import numpy as np import matplotlib.image as mpimg import matplotlib.pyplot as plt # Load our image # `mpimg.imread` wil
img[img.shape[0]//2:,:]
示例代码
import numpy as np
import matplotlib.image as mpimg
import matplotlib.pyplot as plt
# Load our image
# `mpimg.imread` will load .jpg as 0-255, so normalize back to 0-1
img = mpimg.imread('warped_example.jpg')/255
def hist(img):
# TO-DO: Grab only the bottom half of the image
# Lane lines are likely to be mostly vertical nearest to the car
bottom_half = img[img.shape[0]//2:, :]
# TO-DO: Sum across image pixels vertically - make sure to set `axis`
# i.e. the highest areas of vertical lines should be larger values
histogram = np.sum(bottom_half, axis=0)
return histogram
代码示例注释得很好,这意味着您了解了代码的实际功能。简言之 它占据图像的下半部分区域并存储在变量“bottom_half”中,然后垂直获取所有图像像素的总和,然后在数组中返回其值 现在,需要理解的是,函数返回的值是什么,在哪里使用 因为下一步你要做的事情(根据问题)是找到直方图,直方图基本上绘制了图像中各种像素的频率。 现在,这个直方图将输入一个数组或一系列数组,这些数组不需要具有相同的长度。(根据matplotlib) 因此,要绘制直方图,函数需要一个数组,其中包含要绘制直方图的各种像素强度,该数组由程序中定义的函数返回 简而言之,该函数返回一个包含所有像素值的数组,该数组稍后将用于绘制直方图 希望你得到了你想要的:) 编辑:: 我会尽力打破僵局让你明白 首先,img.shape返回三个值的元组(图像高度、图像宽度、通道数) ->img.shape[0]意味着它将拾取图像的高度,如代码中所示,还将执行2的楼层分割,这将给出图像的一半高度(对于分割后的浮点值) 这是在这方面需要了解的两件重要事情 所以,它实际上是在对整个图像进行切片,因为它可以从代码中看到。现在,该切片从图像高度的一半开始,直到图像的最后一行。切片的需要是得到图像的下半部分。 这样可以更好地理解切片 形状[半高开始:,:] 在“”之前,“它从图像的半高到底行对像素进行切片 在'之后,'它对图像中的所有行或图像的全宽进行切片。 要阅读python中的切片,您可以看到 现在是下一个问题,程序正在垂直列上执行np.sum(),它将返回数组中每列的总和。该程序实际上是这样做的,它将只打印图像中的n列(列数),可能是为了更好地显示绘图。这一切都取决于代码 您也可以删除此部分,也可以直接返回底部img,但在这种情况下,直方图将打印所有像素的频率 这一切都取决于代码。
希望这能消除您的疑虑。代码示例注释良好,这意味着您了解了代码的实际功能。简言之 它占据图像的下半部分区域并存储在变量“bottom_half”中,然后垂直获取所有图像像素的总和,然后在数组中返回其值 现在,需要理解的是,函数返回的值是什么,在哪里使用 因为下一步你要做的事情(根据问题)是找到直方图,直方图基本上绘制了图像中各种像素的频率。 现在,这个直方图将输入一个数组或一系列数组,这些数组不需要具有相同的长度。(根据matplotlib) 因此,要绘制直方图,函数需要一个数组,其中包含要绘制直方图的各种像素强度,该数组由程序中定义的函数返回 简而言之,该函数返回一个包含所有像素值的数组,该数组稍后将用于绘制直方图 希望你得到了你想要的:) 编辑:: 我会尽力打破僵局让你明白 首先,img.shape返回三个值的元组(图像高度、图像宽度、通道数) ->img.shape[0]意味着它将拾取图像的高度,如代码中所示,还将执行2的楼层分割,这将给出图像的一半高度(对于分割后的浮点值) 这是在这方面需要了解的两件重要事情 所以,它实际上是在对整个图像进行切片,因为它可以从代码中看到。现在,该切片从图像高度的一半开始,直到图像的最后一行。切片的需要是得到图像的下半部分。 这样可以更好地理解切片 形状[半高开始:,:] 在“”之前,“它从图像的半高到底行对像素进行切片 在'之后,'它对图像中的所有行或图像的全宽进行切片。 要阅读python中的切片,您可以看到 现在是下一个问题,程序正在垂直列上执行np.sum(),它将返回数组中每列的总和。该程序实际上是这样做的,它将只打印图像中的n列(列数),可能是为了更好地显示绘图。这一切都取决于代码 您也可以删除此部分,也可以直接返回底部img,但在这种情况下,直方图将打印所有像素的频率 这一切都取决于代码。
希望这能消除您的疑虑。谢谢您的帮助!我想知道更多关于像素值的信息。什么是母鹿