中易网

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

答案:4  悬赏:60  
解决时间 2021-01-14 06:48
  • 提问者网友:最爱你的唇
  • 2021-01-13 19:09
如何用python分别提取出某个像素的rgb值并写入一个一行三列的数组中。
最佳答案
  • 二级知识专家网友:傲气稳了全场
  • 2021-01-13 20:12
numpy我用得少。
你上面的程序第一个是缩进有问题,这一句for i in range(2*radius):
第二个问题是cx,cy没有定义?
第三个问题,i,j的循环中没有使用step,这样一个浮点数,可能会按1的step来走,结果应该会与想象的有差距。
第四个问题。img后面有些是[]有些又是()。这个显然有问题
第五个问题,R,G,B应该是被引号括起来的。你直接写个字符在这里,显然也应该不对。
全部回答
  • 1楼网友:詩光轨車
  • 2021-01-13 22:46
你先说报什么错了啊
追问:我其实是不知道怎么从imread的结果中取出rgb的值。 最后的报错是
sumC[1,:,:] = sumC[1,:,:] + img(cx,cy,R)
IndexError: too many indices

我觉得我这么取rgb本身就有错误。求指导。
  • 2楼网友:山有枢
  • 2021-01-13 22:18
我用的代码片段你参考一下。
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
  • 3楼网友:春色三分
  • 2021-01-13 21:11

可以使用 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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息