如何查找Black Pixel位置

tru*_*ype 5 c# c++ colors pixels coordinates

我正在做一个奇怪的项目.我可以使用激光切割机来制作模板(金属).我可以使用坐标对机器进行编程以剪切某个图像,但我想知道的是:我怎么能编写一个程序来拍摄黑白扫描图像,并给我黑色区域的坐标?我不介意它是否给出每个像素,即使我只需要外线,我可以做那个部分.

我已经搜索了一段时间了,但是这个问题有很多单词,有很多结果,比如颜色和像素,我发现大量的信息都不相关.我想使用C++或C#,但我可以使用任何语言,包括脚本.

RGr*_*ppa 3

如果我们假设扫描的图像是全白和全黑,没有中间颜色,那么我们可以将图像作为 RGB 值的数组,并简单地扫描 0 值。如果值为 0,它一定是黑色的,对吗?但是,图像可能不会是完全黑色的,因此您需要一些回旋余地。

然后你要做的事情看起来像这样:

    for(int i = 0; i < img.width; i++){
       for(int j = 0; j < img.height; j++){
          // 20 is an arbitrary value and subject to your opinion and need.
          if(img[i][j].color <= 20)
             //store i and j, those are your pixel location
       }
     }
Run Code Online (Sandbox Code Playgroud)

现在,如果您使用 C#,则可以轻松导入大多数图像格式,将它们粘贴到数组中并获得结果。但如果您想要更快的结果,那么使用 C++ 会更好。

该快捷方式完全依赖于非常极端的图像值。如果图像的大面积确实是灰色的,那么这种方法的准确性就很糟糕。

  • 使用 [`unsafe`](http://msdn.microsoft.com/en-us/library/chfa2zb8%28v=vs.71%29.aspx) 块和指针可以非常接近 C++ 的速度。 (3认同)