python - 如何获取某个区域的像素值?

标签 python windows opencv tracking simplecv

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

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

可能还需要知道的重要一点是,我不想用图片来做这件事,而是用网络摄像头制作的实时视频,预设线将是我将用网络摄像头跟踪的对象的半径.

总结一下:我想用我的网络摄像头跟踪一个对象,并且需要一个程序来告诉我沿被跟踪半径线的每个像素的颜色(以数字表示,例如“255”代表白色)对象。

这是我目前用于对象跟踪的预写代码:

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

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

有没有人知道如何解决这个问题? 谢谢!

最佳答案

假设您有中心 (x0, y0)。您想要遍历从 (x0, y0)(x1, y1) 的半径上的像素,这是圆上的一个点。

在 C++ 中,您可以使用 LineIterator为了这个目的。但是,我没有找到它用于 python...

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

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

我认为仅采用我在另一个 StackOverflow 问题上链接到的行迭代器对您来说仍然是最简单的方法。

关于python - 如何获取某个区域的像素值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38741551/

相关文章:

python - Ubuntu pygame获取event.key值

windows - 如何在 Windows XP 中添加“开始”->“运行”快捷方式?

python - 在不加载图像的情况下从 python 获取图像文件的形状

visual-c++ - 如果使用minMaxLoc函数如何替换像素值

python - 如果其他行遵守某些条件,我如何删除基于行?

python - 如何制作将多个模式匹配到同一索引的python正则表达式

c++ - 用不同的 IDE 编译,但只有一个可以工作!

java - 无法启动 GlassFish 4.0 (Windows) - 端口 1527 - 地址已被使用

opencv - 如何加载具有 4 个 channel 的 png 图像?

python - 禁用鼠标单击并更改指针图标