我想通了,找到一个像素的最小和最大价值是找到最小和最大像素值
smallest = numpy.amin(image)
biggest = numpy.amax(image)
但这只会在灰色照片的工作我如何找到最小的值对于每个颜色红色,绿色,蓝色?
谢谢
我想通了,找到一个像素的最小和最大价值是找到最小和最大像素值
smallest = numpy.amin(image)
biggest = numpy.amax(image)
但这只会在灰色照片的工作我如何找到最小的值对于每个颜色红色,绿色,蓝色?
谢谢
您可以用切片访问的每个通道如下:
# red
image[..., 0].min()
image[..., 0].max()
# green
image[..., 1].min()
image[..., 1].max()
# blue
image[..., 2].min()
image[..., 2].max()
这给我带误差回溯(最近通话最后一个): 文件“
@Mumfordwiz - 您需要将您正在使用的任何内容转换为numpy数组。显然它是一个'JpegImageFile'(不知道是哪个库)。如果'JpegImageFile'类支持它,你可能只需要'data = np.array(image)'。 –
@Mumfordwiz的权利,所以你正在阅读使用PIL/Pillow的图像。正如Joe Kington所说,你可以用'np.array(image)' – YXD
可以在Python脚本快速测试它。
import numpy
img = numpy.zeros((10,10,3), dtype=numpy.int) # Black RGB image (10x10)
img[5,2] = [255, 255, 255]
print img.reshape((img.shape[0]*img.shape[1], 3)).max(axis=0)
array([255, 255, 255])
好吧,这似乎工作,但我不明白如何使用它,并找到每个颜色的每个最小值和最大值 – Mumfordwiz
@Mumfordwiz - 你是什么意思“获得每个值”?你只是想'红色,绿色,蓝色=结果'?另外,使用哪个轴('axis = 0'参数)将取决于数组的排列方式。 –
我正在尝试获取每种颜色的最大和最小值。并且我似乎无法得知如何使用此 – Mumfordwiz
假设你有一个BGR图像(使用OpenCV的加载),我发现了一个简单的方法来做到这一点:
import numpy as np
max_channels = np.amax([np.amax(img[:,:,0]), np.amax(img[:,:,1]), np.amax(img[:,:,2])])
print(max_channels)
是它的工作原理,使用numpy.min和numpy.max –
最小= numpy.min(img) 最大= numpy.max(img)是这样的吗?我如何在RGB模式下的图像上使用它? – Mumfordwiz
事实上返回只有一个值,我要寻找一个解决方案 –