如何用python分别提取出某个像素的rgb值并写入一个一行三列的数组中。

2024-12-02 23:02:03
推荐回答(4个)
回答(1):

可以使用 Python Image Library 做,load() 函数会返回一个对象,这个对象我们可以把它当作一个二维数组对待,而数组中存放的就是点的 RGB 值,可以很容易地访问到任何像素点的 RGB 值:

from PIL import Image
 
# 可以支持很多种图片格式.
im = Image.open("your_picture.jpg") 
pix = im.load()
 
# 获得图片的尺度,可以用于迭代
print im.size 
 
# 获得某个像素点的 RGB 值,像素点坐标由 [x, y] 指定
print pix[x,y] 
 
# 设置 [x, y] 点的 RGB 的值为 value 
pix[x,y] = value

回答(2):

numpy我用得少。
你上面的程序第一个是缩进有问题,这一句for i in range(2*radius):
第二个问题是cx,cy没有定义?
第三个问题,i,j的循环中没有使用step,这样一个浮点数,可能会按1的step来走,结果应该会与想象的有差距。
第四个问题。img后面有些是[]有些又是()。这个显然有问题
第五个问题,R,G,B应该是被引号括起来的。你直接写个字符在这里,显然也应该不对。

回答(3):

我用的代码片段你参考一下。
def pj(region):
(w,h)=region.size
t=[0,0,0,0]
for i in range(2,w-2):
for j in range(2,h-2):
(r,g,b,a)=region.getpixel((i,j))
t[0]+=r
t[1]+=g
t[2]+=b
t[3]+=b
t[0]=t[0]/float(w-4)/(h-4)
t[1]=t[1]/float(w-4)/(h-4)
t[2]=t[2]/float(w-4)/(h-4)
t[3]=t[3]/float(w-4)/(h-4)
# #print dir(region)
# for i in range(w):
# for j in range(h):
# region.putpixel((i,j),(t[0],t[1],t[2],t[3]))
return t

回答(4):

你先说报什么错了啊