【问题标题】:How to assign values to pixels in an image如何为图像中的像素分配值
【发布时间】:2015-04-08 16:17:03
【问题描述】:

我有一张图片,我想为特定的颜色赋值。代码如下:

for x in range(mask.shape[0]):         //my image is of size:(400,300)
    for y in range(mask.shape[1]):
        if r[x,y] == 1:
            mask[x,y]=1
        elif g[x,y] == 1:
            mask[x,y] = 1
        else
            mask[x,y] = 0

这里 r,g 是从 cv.split(mask) 生成的。

这是正确的做法吗?

【问题讨论】:

  • 规则#1:从不循环像素。 (你想要的总是有一个内置函数)。
  • 显示代码。我无法想象为什么那行不通。
  • @MarkRansom 我没有写任何代码。我不是编码背景。你能帮助我吗。我只是对如何进行有一个想法。
  • “我用了两个for循环”暗示你写了一些代码。
  • 对不起,我忘了提到我想为特定颜色赋值。这就是我使用两个 for 循环的原因。

标签: python opencv numpy


【解决方案1】:

在 opencv 中,您可以像在 numpy 中一样对图像中的像素进行索引/切片:

img[x,y] = 42  #sets the value of pixel at x,y
p = img[x,y]  #gets the value of pixel at x,y

虽然没有看到任何代码,但很难判断你可能做错了什么。

对于颜色,您需要担心第三个维度:

img[x,y,0] = 42  #sets the BLUE value of pixel at x,y
v = img[x,y,1]  #gets the GREEN value of pixel at x,y

请记住,在 opencv 中,颜色的默认顺序是 BGR,而不是 RGB。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-14
    • 2013-08-21
    • 1970-01-01
    • 2012-07-21
    • 2019-09-17
    • 2022-11-21
    • 2023-02-20
    • 2016-08-19
    相关资源
    最近更新 更多