使用Python OpenCV对像素进行着色

6

我需要在一张图片中给一个像素上色。我使用opencv和python。
我尝试使用 img[x,y]=[255 255 255] 来给像素 (x,y) 上色,但是它不起作用 :(

这里有什么错误吗?
你能提供任何方法吗?

谢谢您提前。

3个回答

7

img[x,y]=[255, 255, 255]是错误的,因为opencv中的img[a,b]是一个矩阵,所以你需要改变x,y,然后必须使用img[y,x]

实际上,x和y的顺序是错的。如果你想改变点x,y的颜色,请使用这个 >> img[y,x] = color


5

用逗号将255之间的数字分隔开来试试:

img[x,y]=[255, 255, 255]

1

这对我有效,只需更改以加载您自己的图像:

import cv2

img = cv2.imread("C:\calibrate\chess\color001.jpg", cv2.CV_LOAD_IMAGE_COLOR);

## Make pixels row and column 300-400 black
img[300:400,300:400] = (0,0,0)

cv2.imshow('title',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

代码是 (x,y),radius = cv2.minEnclosingCircle(cnt)。这里的(x,y)是一个中心点。我想给中心点上色,所以我使用了img[x,y]。这样做对吗?我应该如何表示中心点? - Prasika
先尝试一下我的代码是否可以为您着色像素。然后您可以说这已经回答了您的问题。另一个问题 -> 打印出x,y坐标并检查它们是否符合您的预期。也许1个像素太小看不见了。 - Deepfreeze
你的代码可以用来给一块像素上色。我打印了x和y,输出结果是(97,417)。这是一个像素的x和y坐标,我说得对吗?我需要给一个点上色img[97,417]=(0,0,0),但是它没有起作用:( - Prasika
你可能需要使用img[417,97]=(0,0,0)。 - Deepfreeze
它显示以下错误消息:"img[417,97]=(0,0,0) ValueError:使用序列设置数组元素。" - Prasika
这是你在单个stackoverflow问题中的第三个问题。如果你遇到这样的错误信息,只需使用谷歌搜索并尝试理解为什么会出现此错误。如果你找不到答案,请发布一个带有一些代码的新问题,这样我们就不需要猜测是什么导致了这个错误。 - Deepfreeze

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接