【发布时间】:2014-10-16 01:35:10
【问题描述】:
我想从图像中获取 RGB 的像素值。我是在 Matlab 和 Python 中完成的,但我获得了不同的值,尤其是在绿色值时。 如果您对此事有任何建议,我将不胜感激。 谢谢 这是我在 python 中的代码
from PIL import Image
import numpy as np
im = Image.open("lena.jpg")
imPixelVal = np.ones(np.size(im))
imSize = np.size(im)
for i in range (0,imSize[0]):
for j in range (0,imSize[1]):
ij = i , j
p = im.getpixel(ij)
imPixelVal[i,j] = (0.2989 * p[0]) + (0.5870 * p[1]) + (0.1140 * p[2])
print p[0]
print p[1]
print p[2]
这也是 Matlab 中的代码:
Im=imread('lena.jpg');
Img = (ones(size(Im,1),size(Im,2)));
for i=1:size(Im,1)
for j=1:size(Im,2)
Img(i,j)=0.2989*Im(i,j,1)+0.5870*Im(i,j,2)+0.1140*Im(i,j,3);
end
end
Im(1,1,1)
Im(1,1,2)
Im(1,1,3)
【问题讨论】:
-
能否提供MCVE 和数据差异示例?
-
了解您的图像采用哪种数据格式可能会很有趣。
-
详细说明您使用的代码以及不同之处。
-
我编辑并添加了 Python 和 Matlab 的代码
-
由于 JPEG 是一种有损格式,不同的阅读器可以很容易地相差 +/-1,具体取决于它们如何对解码值进行四舍五入。不过,Schorsch 的答案可能是正确的。
标签: python matlab image-processing rgb getpixel