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 matplotlib.image.imread()返回的数组是什么意思?_Python_Python 3.x_Numpy_Matplotlib - Fatal编程技术网

Python matplotlib.image.imread()返回的数组是什么意思?

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

我试图用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` 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,但在这种情况下,直方图将打印所有像素的频率

这一切都取决于代码。
希望这能消除您的疑虑。

谢谢您的帮助!我想知道更多关于像素值的信息。什么是母鹿