如何获得某个区域的像素值?

2024-09-25 00:32:18 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,由于我对编程比较陌生,所以我需要一些帮助来解决这个问题。 我在Windows计算机上使用SimpleCV和python2.7。 我要做的是让一个(自写)程序告诉我沿着一条预设线的像素值,这里最重要的是每个像素的颜色。在

我真的不知道从哪里开始,因为我只找到了一些例子,它被要求提供单个像素的值。在

可能还很重要的一点是,我不想用一张图片,而是用一个网络摄像头制作的实时视频,预设线是我将用网络游戏跟踪的对象的半径。在

总而言之,我想用我的网络摄像头跟踪一个物体,需要一个程序来告诉我沿着被跟踪对象半径线的每个像素的颜色(用数字表示,例如“255”代表白色)。在

这是我当前用于obejct跟踪的预先编写的代码:

print __doc__

import SimpleCV

display = SimpleCV.Display()
cam = SimpleCV.Camera()
normaldisplay = True

while display.isNotDone():

    if display.mouseRight:
         normaldisplay = not(normaldisplay)
         print "Display Mode:", "Normal" if normaldisplay else "Segmented" 

img = cam.getImage().flipHorizontal()
dist = img.colorDistance(SimpleCV.Color.BLACK).dilate(2)
segmented = dist.stretch(200,255)
blobs = segmented.findBlobs()
if blobs:
    circles = blobs.filter([b.isCircle(0.2) for b in blobs])
    if circles:
        img.drawCircle((circles[-1].x, circles[-1].y), circles[-1].radius(),SimpleCV.Color.BLUE,3)

if normaldisplay:
    img.show()
else:
    segmented.show()

here is a snapshot of the tracked object

我需要沿着半径的像素颜色,因为我想知道从中心到边缘的光强度是如何降低的。在

有人知道如何解决这个问题吗? 谢谢您!在


Tags: 对象程序网络imgif颜色display半径
1条回答
网友
1楼 · 发布于 2024-09-25 00:32:18

假设你有一个中心(x0, y0)。您需要迭代半径上从(x0, y0)(x1, y1)的像素,这是圆上的一个点。在

在C++中,你可以使用LineIterator来实现这个目的。但是,我没有为python找到它。。。在

因此,您可以在Python中实现自己的LineIterator(或使用the one made by a nice StackOverFlow contributor),或者,如果性能不是应用程序中的关键问题,则可以求助于可怕的黑客:

  • 创建一个与图像大小相同的黑色二进制掩码
  • 在这个面具上画线
  • 使用NumPy nonzero function查找所有非黑色像素。在
  • 你得到了你的线的像素(尽管它们没有被排序)
  • 根据它们离中心的距离来排序。在

我认为在另一个StackOverflow问题上使用我链接的行迭代器仍然是最简单的方法。在

相关问题 更多 >