如何用python分别提取出某个像素的rgb值并写入一个一行三列的数组中。
求图片色彩平均值:result=np.zeros((3))sumC=np.zeros((3))foriinrange(2*radius):forjinrange(2*ra...
求图片色彩平均值:
result = np.zeros( (3) )
sumC = np.zeros( (3) )
for i in range(2*radius):
for j in range(2*radius):
if((cx-radius+i)>0 and (cy-radius+j)>0 and i<radius and j<radius):
sumC[0,:,:] = sumC[0,:,:] + img[cx,cy,R]
sumC[:,0,:] = sumC[:,0,:] + img(cx,cy,G)
sumC[:,:,0] = sumC[:,:,0] + img(cx,cy,B)
请帮忙指出上面的错误 。 img为imread得来的图片。 展开
result = np.zeros( (3) )
sumC = np.zeros( (3) )
for i in range(2*radius):
for j in range(2*radius):
if((cx-radius+i)>0 and (cy-radius+j)>0 and i<radius and j<radius):
sumC[0,:,:] = sumC[0,:,:] + img[cx,cy,R]
sumC[:,0,:] = sumC[:,0,:] + img(cx,cy,G)
sumC[:,:,0] = sumC[:,:,0] + img(cx,cy,B)
请帮忙指出上面的错误 。 img为imread得来的图片。 展开
4个回答
展开全部
可以使用 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
展开全部
numpy我用得少。
你上面的程序第一个是缩进有问题,这一句for i in range(2*radius):
第二个问题是cx,cy没有定义?
第三个问题,i,j的循环中没有使用step,这样一个浮点数,可能会按1的step来走,结果应该会与想象的有差距。
第四个问题。img后面有些是[]有些又是()。这个显然有问题
第五个问题,R,G,B应该是被引号括起来的。你直接写个字符在这里,显然也应该不对。
你上面的程序第一个是缩进有问题,这一句for i in range(2*radius):
第二个问题是cx,cy没有定义?
第三个问题,i,j的循环中没有使用step,这样一个浮点数,可能会按1的step来走,结果应该会与想象的有差距。
第四个问题。img后面有些是[]有些又是()。这个显然有问题
第五个问题,R,G,B应该是被引号括起来的。你直接写个字符在这里,显然也应该不对。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我用的代码片段你参考一下。
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-03-17 · 知道合伙人软件行家
关注
展开全部
你先说报什么错了啊
追问
我其实是不知道怎么从imread的结果中取出rgb的值。 最后的报错是
sumC[1,:,:] = sumC[1,:,:] + img(cx,cy,R)
IndexError: too many indices
我觉得我这么取rgb本身就有错误。求指导。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询