2014-01-14 148 views
3

我想通了,找到一个像素的最小和最大价值是找到最小和最大像素值

  smallest = numpy.amin(image) 
     biggest = numpy.amax(image) 

但这只会在灰色照片的工作我如何找到最小的值对于每个颜色红色,绿色,蓝色?

谢谢

+1

是它的工作原理,使用numpy.min和numpy.max –

+0

最小= numpy.min(img) 最大= numpy.max(img)是这样的吗?我如何在RGB模式下的图像上使用它? – Mumfordwiz

+0

事实上返回只有一个值,我要寻找一个解决方案 –

回答

4

您可以用切片访问的每个通道如下:

# red 
image[..., 0].min() 
image[..., 0].max() 
# green 
image[..., 1].min() 
image[..., 1].max() 
# blue 
image[..., 2].min() 
image[..., 2].max() 
+0

这给我带误差回溯(最近通话最后一个): 文件“”,1号线,在 minred = IM [...,0] .min() TypeError:'JpegImageFile'对象不可订阅 – Mumfordwiz

+1

@Mumfordwiz - 您需要将您正在使用的任何内容转换为numpy数组。显然它是一个'JpegImageFile'(不知道是哪个库)。如果'JpegImageFile'类支持它,你可能只需要'data = np.array(image)'。 –

+0

@Mumfordwiz的权利,所以你正在阅读使用PIL/Pillow的图像。正如Joe Kington所说,你可以用'np.array(image)' – YXD

2

可以在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])

+0

好吧,这似乎工作,但我不明白如何使用它,并找到每个颜色的每个最小值和最大值 – Mumfordwiz

+0

@Mumfordwiz - 你是什么意思“获得每个值”?你只是想'红色,绿色,蓝色=结果'?另外,使用哪个轴('axis = 0'参数)将取决于数组的排列方式。 –

+0

我正在尝试获取每种颜色的最大和最小值。并且我似乎无法得知如何使用此 – Mumfordwiz

0

假设你有一个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) 
相关问题